js設(shè)置document.domain實(shí)現(xiàn)跨域的注意點(diǎn)分析
本文實(shí)例分析了js設(shè)置document.domain實(shí)現(xiàn)跨域的注意點(diǎn)。分享給大家供大家參考。具體分析如下:
document.domain
用來得到當(dāng)前網(wǎng)頁的域名。
比如在地址欄里輸入:
我們也可以給document.domain屬性賦值,不過是有限制的,你只能賦成當(dāng)前的域名或者基礎(chǔ)域名。
比如:
javascript:alert(document.domain = "www.dhdzp.com"); //www.dhdzp.com
上面的賦值都是成功的,因?yàn)閣ww.dhdzp.com是當(dāng)前的域名,而jb51.net是基礎(chǔ)域名。
但是下面的賦值就會(huì)出來"參數(shù)無效"的錯(cuò)誤:
javascript:alert(document.domain = "www.dhdzp.com"); //參數(shù)無效
因?yàn)閏ctv.net與www.dhdzp.com不是當(dāng)前的域名也不是當(dāng)前域名的基礎(chǔ)域名,所以會(huì)有錯(cuò)誤出現(xiàn)。
這是為了防止有人惡意修改document.domain來實(shí)現(xiàn)跨域偷取數(shù)據(jù)。
利用document.domain 實(shí)現(xiàn)跨域:
前提條件:這兩個(gè)域名必須屬于同一個(gè)基礎(chǔ)域名!而且所用的協(xié)議,端口都要一致,否則無法利用document.domain進(jìn)行跨域
Javascript出于對(duì)安全性的考慮,而禁止兩個(gè)或者多個(gè)不同域的頁面進(jìn)行互相操作。
相同域的頁面在相互操作的時(shí)候不會(huì)有任何問題。
比如在:aaa.com的一個(gè)網(wǎng)頁(a.html)里面 利用iframe引入了一個(gè)bbb.com里的一個(gè)網(wǎng)頁(b.html)。
這時(shí)在a.html里面可以看到b.html里的內(nèi)容,但是卻不能利用javascript來操作它。因?yàn)檫@兩個(gè)頁面屬于不同的域,在操作之前,js會(huì)檢測(cè)兩個(gè)頁面的域是否相等,如果相等,就允許其操作,如果不相等,就會(huì)拒絕操作。
這里不可能把a(bǔ).html與b.html利用JS改成同一個(gè)域的。因?yàn)樗鼈兊幕A(chǔ)域名不相等。(強(qiáng)制用JS將它們改成相等的域的話會(huì)報(bào)跟上面一樣的"參數(shù)無效錯(cuò)誤。")
所以如果在a.html里引入aaa.com里的另一個(gè)網(wǎng)頁,是不會(huì)有這個(gè)問題的,因?yàn)橛蛳嗟取?/p>
有另一種情況,兩個(gè)子域名:
aaa.xxx.com
bbb.xxx.com
aaa里的一個(gè)網(wǎng)頁(a.html)引入了bbb 里的一個(gè)網(wǎng)頁(b.html),
這時(shí)a.html里同樣是不能操作b.html里面的內(nèi)容的。
因?yàn)閐ocument.domain不一樣,一個(gè)是aaa.xxx.com,另一個(gè)是bbb.xxx.com。
這時(shí)我們就可以通過Javascript,將兩個(gè)頁面的domain改成一樣的,
需要在a.html里與b.html里都加入:
這樣這兩個(gè)頁面就可以互相操作了。也就是實(shí)現(xiàn)了同一基礎(chǔ)域名之間的"跨域"。
希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。
- jquery對(duì)象和javascript對(duì)象即DOM對(duì)象相互轉(zhuǎn)換
- JS、CSS以及img對(duì)DOMContentLoaded事件的影響
- javascript獲取dom的下一個(gè)節(jié)點(diǎn)方法
- Javascript基礎(chǔ)知識(shí)(三)BOM,DOM總結(jié)
- javascript學(xué)習(xí)筆記(三)BOM和DOM詳解
- 使用js Math.random()函數(shù)生成n到m間的隨機(jī)數(shù)字
- 通過JS動(dòng)態(tài)創(chuàng)建一個(gè)html DOM元素并顯示
- 簡(jiǎn)介AngularJS的HTML DOM支持情況
- javascript中html字符串轉(zhuǎn)化為jquery dom對(duì)象的方法
- 在javascript中隨機(jī)數(shù) math random如何生成指定范圍數(shù)值的隨機(jī)數(shù)
- JavaScript駕馭網(wǎng)頁-DOM
相關(guān)文章
支付寶小程序自定義彈窗dialog插件的實(shí)現(xiàn)代碼
支付寶小程序官方提供的alert提示框、dialog對(duì)話框、model彈窗功能比較有限,有些都不能隨意自定義修改的。這篇文章主要介紹了支付寶小程序自定義彈窗dialog插件的實(shí)現(xiàn)代碼,需要的朋友可以參考下2018-11-11
JS getAttribute和setAttribute(取得和設(shè)置屬性)的使用介紹
本篇文章是對(duì)JS中的getAttribute和setAttribute(取得和設(shè)置屬性)的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以參考下2013-07-07
JavaScript兩種axios取消請(qǐng)求方式小結(jié)
本文主要介紹了JavaScript兩種axios取消請(qǐng)求方式小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
JS中的6種打斷點(diǎn)的方式實(shí)例總結(jié)
斷點(diǎn)調(diào)試是啥?難不難? 斷點(diǎn)調(diào)試其實(shí)并不是多么復(fù)雜的一件事,簡(jiǎn)單的理解無外呼就是打開瀏覽器,打開sources找到j(luò)s文件,在行號(hào)上點(diǎn)一下罷了,下面這篇文章主要給大家介紹了關(guān)于JS中6種打斷點(diǎn)方式的相關(guān)資料,需要的朋友可以參考下2022-04-04
JavaScript中for與forEach分別如何跳出循環(huán)
forEach的優(yōu)勢(shì)一個(gè)是它的回調(diào)函數(shù)形成了一個(gè)作用域,它的curItem和i不會(huì)像for循環(huán)一樣污染全局變量,這篇文章主要給大家介紹了關(guān)于JavaScript中for與forEach分別如何跳出循環(huán)的相關(guān)資料,需要的朋友可以參考下2024-01-01
JS支付頁面倒計(jì)時(shí)的實(shí)現(xiàn)示例
本文主要介紹了JS支付頁面倒計(jì)時(shí)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03
前端在線預(yù)覽PDF文件三種實(shí)現(xiàn)方式(兼容移動(dòng)端)
這篇文章主要介紹了前端在線預(yù)覽PDF文件三種實(shí)現(xiàn)方式的相關(guān)資料,分別是使用微軟在線預(yù)覽地址、直接使用window.open打開文檔鏈接以及使用PDF.js,PDF.js方法穩(wěn)定,適用于大多數(shù)文件,每種方法都給出了詳細(xì)的代碼示例,需要的朋友可以參考下2025-02-02

