首頁  >  文章  >  web前端  >  js設定document.domain實作跨域的注意點分析_javascript技巧

js設定document.domain實作跨域的注意點分析_javascript技巧

WBOY
WBOY原創
2016-05-16 15:58:091504瀏覽

本文實例分析了js設定document.domain實作跨域的注意點。分享給大家供大家參考。具體分析如下:

document.domain
用來得到目前網頁的網域。
例如在網址列輸入:

複製程式碼 程式碼如下:
javascript:alert(document.domain); //www.jb51.net

我們也可以給document.domain屬性賦值,不過是有限制的,你只能賦成目前的網域或基礎網域。
如:

複製程式碼 程式碼如下:
javascript:alert(document.domain = "jb51.net"); //jb51 .net
javascript:alert(document.domain = "www.jb51.net"); //www.jb51.net

上面的賦值都是成功的,因為www.jb51.net是目前的域名,而jb51.net是基礎域名。

但是下面的賦值就會出來"參數無效"的錯誤:

複製程式碼 程式碼如下:
javascript:alert(document.domain = "cctv.net"); //參數參數無效
javascript:alert(document.domain = "www.jb51.net"); //參數無效

因為cctv.net與www.jb51.net不是目前的域名也不是目前域名的基礎域名,所以會有錯誤出現。
這是為了防止有人惡意修改document.domain來實作跨域偷取資料。

利用document.domain 實作跨域:

前提條件:這兩個網域必須屬於同一個基礎網域!而且所使用的協議,埠都要一致,否則無法利用document.domain進行跨域

Javascript出於對安全性的考慮,而禁止兩個或多個不同域的頁面進行互相操作。
相同域的頁面在相互操作的時候不會有任何問題。

例如在:aaa.com的一個網頁(a.html)裡面 利用iframe引進了一個bbb.com裡的一個網頁(b.html)。
這時在a.html裡面可以看到b.html裡的內容,但不能利用javascript來操作它。因為這兩個頁面屬於不同的域,在操作之前,js會偵測兩個頁面的域是否相等,如果相等,就允許其操作,如果不相等,就會拒絕操作。
這裡不可能把a.html與b.html利用JS改成同一個域的。因為它們的基礎網域不相等。 (強制用JS將它們改成相等的域的話會報跟上面一樣的"參數無效錯誤。")

所以如果在a.html裡引入aaa.com裡的另一個網頁,是不會有這個問題的,因為網域相等。

有另一種情況,兩個子網域:

aaa.xxx.com
bbb.xxx.com

aaa裡的一個網頁(a.html)引進了bbb 裡的一個網頁(b.html),
這時a.html裡同樣是不能操作b.html裡面的內容的。
因為document.domain不一樣,一個是aaa.xxx.com,另一個是bbb.xxx.com。

這時我們就可以透過Javascript,將兩個頁面的domain改成一樣的,
需要在a.html裡加入b.html:

複製程式碼 程式碼如下:
document.domain = "xxx.com";

這樣這兩個頁面就可以互相操作了。也就是實現了同一基礎網域之間的"跨域"。

希望本文所述對大家的javascript程式設計有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn