摘要:設(shè)置實(shí)現(xiàn)跨域用來(lái)得到當(dāng)前網(wǎng)頁(yè)的域名。這是為了防止有人惡意修改來(lái)實(shí)現(xiàn)跨域偷取數(shù)據(jù)。也就是實(shí)現(xiàn)了同一基礎(chǔ)域名之間的跨域。
JS設(shè)置document.domain實(shí)現(xiàn)跨域
@(StuRep)
document.domain
用來(lái)得到當(dāng)前網(wǎng)頁(yè)的域名。
比如在地址欄里輸入:
代碼如下: javascript:alert(document.domain); //www.jb51.net
我們也可以給document.domain屬性賦值,不過(guò)是有限制的,你只能賦成當(dāng)前的域名或者基礎(chǔ)域名。
比如:
代碼如下: javascript:alert(document.domain = "jb51.net"); //jb51.net javascript:alert(document.domain = "www.jb51.net"); //www.jb51.net
上面的賦值都是成功的,因?yàn)閣ww.jb51.net是當(dāng)前的域名,而jb51.net是基礎(chǔ)域名。
但是下面的賦值就會(huì)出來(lái)"參數(shù)無(wú)效"的錯(cuò)誤:
代碼如下: javascript:alert(document.domain = "cctv.net"); //參數(shù)無(wú)效 javascript:alert(document.domain = "www.jb51.net"); //參數(shù)無(wú)效
因?yàn)閏ctv.net與www.jb51.net不是當(dāng)前的域名也不是當(dāng)前域名的基礎(chǔ)域名,所以會(huì)有錯(cuò)誤出現(xiàn)。這是為了防止有人惡意修改document.domain來(lái)實(shí)現(xiàn)跨域偷取數(shù)據(jù)。
利用document.domain 實(shí)現(xiàn)跨域:
前提條件:這兩個(gè)域名必須屬于同一個(gè)基礎(chǔ)域名!而且所用的協(xié)議,端口都要一致,否則無(wú)法利用document.domain進(jìn)行跨域.
Javascript出于對(duì)安全性的考慮,而禁止兩個(gè)或者多個(gè)不同域的頁(yè)面進(jìn)行互相操作。
相同域的頁(yè)面在相互操作的時(shí)候不會(huì)有任何問(wèn)題。
比如在:aaa.com的一個(gè)網(wǎng)頁(yè)(a.html)里面 利用iframe引入了一個(gè)bbb.com里的一個(gè)網(wǎng)頁(yè)(b.html)。
這時(shí)在a.html里面可以看到b.html里的內(nèi)容,但是卻不能利用javascript來(lái)操作它。因?yàn)檫@兩個(gè)頁(yè)面屬于不同的域,在操作之前,js會(huì)檢測(cè)兩個(gè)頁(yè)面的域是否相等,如果相等,就允許其操作,如果不相等,就會(huì)拒絕操作。
這里不可能把a(bǔ).html與b.html利用JS改成同一個(gè)域的。因?yàn)樗鼈兊幕A(chǔ)域名不相等。(強(qiáng)制用JS將它們改成相等的域的話(huà)會(huì)報(bào)跟上面一樣的"參數(shù)無(wú)效錯(cuò)誤。")
所以如果在a.html里引入aaa.com里的另一個(gè)網(wǎng)頁(yè),是不會(huì)有這個(gè)問(wèn)題的,因?yàn)橛蛳嗟取?br>有另一種情況,兩個(gè)子域名:
aaa.xxx.com
bbb.xxx.com
aaa里的一個(gè)網(wǎng)頁(yè)(a.html)引入了bbb 里的一個(gè)網(wǎng)頁(yè)(b.html),
這時(shí)a.html里同樣是不能操作b.html里面的內(nèi)容的。
因?yàn)閐ocument.domain不一樣,一個(gè)是aaa.xxx.com,另一個(gè)是bbb.xxx.com。
這時(shí)我們就可以通過(guò)Javascript,將兩個(gè)頁(yè)面的domain改成一樣的,
需要在a.html里與b.html里都加入:
代碼如下: document.domain = "xxx.com";
這樣這兩個(gè)頁(yè)面就可以互相操作了。也就是實(shí)現(xiàn)了同一基礎(chǔ)域名之間的"跨域"。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/79860.html
摘要:同源策略所謂同源是指協(xié)議,域名,端口均相同。同源策略是瀏覽器的一個(gè)安全功能,不同源的客戶(hù)端腳本在沒(méi)有明確授權(quán)的情況下,不能讀寫(xiě)對(duì)方資源。需注意的是由于同源策略的限制,所讀取的為跨域請(qǐng)求接口所在域的,而非當(dāng)前頁(yè)。 一、什么是跨域 1.URL解析 URL (Uniform Resource Locator )統(tǒng)一資源定位符(URL)是用于完整地描述Internet上網(wǎng)頁(yè)和其他資源的地址的...
摘要:需注意的是由于同源策略的限制,所讀取的為跨域請(qǐng)求接口所在域的,而非當(dāng)前頁(yè)。目前,所有瀏覽器都支持該功能需要使用對(duì)象來(lái)支持,也已經(jīng)成為主流的跨域解決方案。反向代理接口跨域跨域原理同源策略是瀏覽器的安全策略,不是協(xié)議的一部分。 什么是跨域? 跨域是指一個(gè)域下的文檔或腳本試圖去請(qǐng)求另一個(gè)域下的資源,這里跨域是廣義的。 廣義的跨域: 1.) 資源跳轉(zhuǎn): A鏈接、重定向、表單提交 2.) 資源...
摘要:可以說(shuō)是構(gòu)建在同源策略基礎(chǔ)之上的,瀏覽器只是針對(duì)同源策略的一種實(shí)現(xiàn)。只能設(shè)置為主域名,不可以在中將設(shè)置為。問(wèn)題安全性,當(dāng)一個(gè)站點(diǎn)被攻擊后,另一個(gè)站點(diǎn)會(huì)引起安全漏洞。在此處執(zhí)行利用和這個(gè)辦法比較繞,但是可以解決完全跨域情況下的腳步置換問(wèn)題。 ajax之面試必問(wèn)跨域問(wèn)題,如果你知道jsonp就弱爆了,往深處稍微問(wèn)那么一丟丟,你就會(huì)被虐的萬(wàn)劫不復(fù)...個(gè)人總結(jié)ajax: 1、什么是跨域2、d...
摘要:可以說(shuō)是構(gòu)建在同源策略基礎(chǔ)之上的,瀏覽器只是針對(duì)同源策略的一種實(shí)現(xiàn)。只能設(shè)置為主域名,不可以在中將設(shè)置為。問(wèn)題安全性,當(dāng)一個(gè)站點(diǎn)被攻擊后,另一個(gè)站點(diǎn)會(huì)引起安全漏洞。在此處執(zhí)行利用和這個(gè)辦法比較繞,但是可以解決完全跨域情況下的腳步置換問(wèn)題。 ajax之面試必問(wèn)跨域問(wèn)題,如果你知道jsonp就弱爆了,往深處稍微問(wèn)那么一丟丟,你就會(huì)被虐的萬(wàn)劫不復(fù)...個(gè)人總結(jié)ajax: 1、什么是跨域2、d...
閱讀 2660·2021-11-24 09:39
閱讀 3509·2021-11-15 11:37
閱讀 2466·2021-10-08 10:04
閱讀 4087·2021-09-09 11:54
閱讀 1948·2021-08-18 10:24
閱讀 1179·2019-08-30 11:02
閱讀 1866·2019-08-29 18:45
閱讀 1764·2019-08-29 16:33