當前位置:才華齋>設計>網頁設計>

Javascript實現跨域的要點分析

網頁設計 閱讀(3.02W)

in用來得到當前網頁的域名。

Javascript實現跨域的要點分析

比如在位址列裡輸入:

程式碼如下:

javascript:alert(in); //

我們也可以給in屬性賦值,不過是有限制的,你只能賦成當前的域名或者基礎域名。

比如:

程式碼如下:

javascript:alert(in = ""); //

javascript:alert(in = ""); //

上面的賦值都是成功的,因為是當前的域名,而是基礎域名。

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

程式碼如下:

javascript:alert(in = ""); //引數無效

javascript:alert(in = ""); //引數無效

因為與不是當前的域名也不是當前域名的基礎域名,所以會有錯誤出現。

這是為了防止有人惡意修改in來實現跨域偷取資料。

利用in 實現跨域:

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

Javascript出於對安全性的考慮,而禁止兩個或者多個不同域的頁面進行互相操作。

相同域的頁面在相互操作的時候不會有任何問題。

比如在:的一個網頁()裡面 利用iframe引入了一個裡的一個網頁()。

這時在裡面可以看到裡的內容,但是卻不能利用javascript來操作它。因為這兩個頁面屬於不同的域,在操作之前,js會檢測兩個頁面的域是否相等,如果相等,就允許其操作,如果不相等,就會拒絕操作。

這裡不可能把與利用JS改成同一個域的。因為它們的基礎域名不相等。(強制用JS將它們改成相等的域的話會報跟上面一樣的"引數無效錯誤。")

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

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

aaa裡的一個網頁()引入了bbb 裡的一個網頁(),

這時裡同樣是不能操作裡面的內容的。

因為in不一樣,一個是,另一個是。

這時我們就可以通過Javascript,將兩個頁面的domain改成一樣的,

需要在裡與裡都加入:

程式碼如下:

in = "";

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