摘要:為什么要有同源限制同源策略的目的主要是為了防止惡意獲取修改網(wǎng)站數(shù)據(jù)。假設(shè)現(xiàn)在沒(méi)有同源策略,會(huì)發(fā)生什么事情呢大家知道,可以做很多東西,比如讀取修改網(wǎng)頁(yè)中某個(gè)值。
什么是同源
同domain(或ip),同端口,同協(xié)議視為同一個(gè)域,一個(gè)域內(nèi)的腳本僅僅具有本域內(nèi)的權(quán)限,可以理解為本域腳本只能讀寫本域內(nèi)的資源,而無(wú)法訪問(wèn)其它域的資源。這種安全限制稱為同源策略。
為什么要有同源限制同源策略的目的主要是為了防止惡意獲取/修改網(wǎng)站數(shù)據(jù)。而這些數(shù)據(jù)主要包括cookie,LocalStorage,DOM,以及發(fā)送的AJAX請(qǐng)求。
假設(shè)現(xiàn)在沒(méi)有同源策略,會(huì)發(fā)生什么事情呢?大家知道,JavaScript可以做很多東西,比如:讀取/修改網(wǎng)頁(yè)中某個(gè)值。恩,你現(xiàn)在打開了瀏覽器,在一 個(gè)tab窗口中打開了銀行網(wǎng)站,在另外一個(gè)tab窗口中打開了一個(gè)惡意網(wǎng)站,而那個(gè)惡意網(wǎng)站掛了一個(gè)的專門修改銀行信息的JavaScript,當(dāng)你訪問(wèn) 這個(gè)惡意網(wǎng)站并且執(zhí)行它JavaScript時(shí),你的銀行頁(yè)面就會(huì)被這個(gè)JavaScript修改,后果會(huì)非常嚴(yán)重!而同源策略就為了防止這種事情發(fā)生。
所以,我們可以知道,同源策略是必須的,但是,有的時(shí)候我們還是要規(guī)避同源策略的限制,比如說(shuō)從A網(wǎng)站跳到B網(wǎng)站時(shí),我們要讀到A網(wǎng)站的cookie。
document.domain屬性用來(lái)得到當(dāng)前網(wǎng)頁(yè)的域名。
我們也可以給document.domain屬性賦值,不過(guò)是有限制的,你只能賦成當(dāng)前的域名或者基礎(chǔ)域名。
比如:你當(dāng)前域名是qa-my.test.segmentgault.com
那么你就可以設(shè)置
document.domain = ".test.segmentgault.com"
或者
document.domain = "qa-my.test.segmentgault.com"
上面的賦值都是成功的,因?yàn)閝a-my.test.segmentgault.com是當(dāng)前的域名,而.test.segmentgault.com是基礎(chǔ)域名。
但是下面的賦值就會(huì)出來(lái)"參數(shù)無(wú)效"的錯(cuò)誤:
document.domain = "google.com"
因?yàn)間oogle.com即不是當(dāng)前的域名也不是當(dāng)前域名的基礎(chǔ)域名,所以會(huì)有錯(cuò)誤出現(xiàn)。
這是為了防止有人惡意修改document.domain來(lái)實(shí)現(xiàn)跨域偷取數(shù)據(jù)。
Cookie 是服務(wù)器寫入瀏覽器的一小段信息,只有同源的網(wǎng)頁(yè)才能共享。瀏覽器允許基礎(chǔ)域名相同的網(wǎng)站間通過(guò)設(shè)置document.domain共享 Cookie。
舉例來(lái)說(shuō),A網(wǎng)頁(yè)是
http://my.segmentfault.com/a.html
B網(wǎng)頁(yè)是
http://he.segmentfault.com/b.html
那么只要設(shè)置相同的document.domain,兩個(gè)網(wǎng)頁(yè)就可以共享Cookie。
document.domain = "segmentfault.com"
現(xiàn)在,A網(wǎng)頁(yè)通過(guò)腳本設(shè)置一個(gè) Cookie
document.cookie = "domainTest=hello world"
B網(wǎng)頁(yè)就可以讀到這個(gè)Cookie
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/87787.html
摘要:同源策略禁止使用對(duì)象向不同源的服務(wù)器地址發(fā)起請(qǐng)求。借助于決解同源策略決解同源策略,新方案跨域資源共享這里講的重點(diǎn)跨域資源共享提供的標(biāo)準(zhǔn)跨域解決方案,是一個(gè)由瀏覽器共同遵循的一套控制策略,通過(guò)的來(lái)進(jìn)行交互主要通過(guò)后端來(lái)設(shè)置配置項(xiàng)。 了解下同源策略 源(origin)*:就是協(xié)議、域名和端口號(hào); 同源: 就是源相同,即協(xié)議、域名和端口完全相同; 同源策略:同源策略是瀏覽器的一個(gè)安全...
摘要:于是乎同源策略應(yīng)運(yùn)而生主要限制在于和無(wú)法讀取。怎么繞過(guò)同源策略首先一般來(lái)說(shuō)協(xié)議和端口造成的跨域問(wèn)題大部分方法是沒(méi)有辦法繞過(guò)的。二級(jí)域名是寄存在主域名之下的域名。當(dāng)主域名受到懲罰二級(jí)域名也會(huì)連帶懲罰。 前言 這是一道前端跨不過(guò)躲不掉面試必備的知識(shí),掙扎多年沒(méi)能做到刻骨銘心深入脊髓,只能好好寫篇博文記錄起來(lái)了; 什么是跨域? 廣義來(lái)說(shuō),A域執(zhí)行的文檔腳本試圖去請(qǐng)求B域下的資源是不被允許的,...
摘要:但是這種方法適用于和窗口,和無(wú)法通過(guò)這種方法規(guī)避同源策略。逗號(hào)分隔的一個(gè)字符串,表明服務(wù)器支持的所有跨域請(qǐng)求的方法。 在制作oneday-music-player的時(shí)候要使用ajax向百度音樂(lè)的api發(fā)送請(qǐng)求,然后出現(xiàn)了XMLHttpRequest cannot load http://.... . No Access-Control-Allow-Origin header is pr...
摘要:三哪些會(huì)受到同源策略限制對(duì)于瀏覽器來(lái)說(shuō),除了會(huì)受到同源策略的限制外,瀏覽器加載的一些第三方插件也有各自的同源策略。九的現(xiàn)代瀏覽器允許腳本直連一個(gè)地址而不管同源策略。 一、Origin(源) 源由下面三個(gè)部分組成: 域名 端口 協(xié)議 兩個(gè) URL ,只有這三個(gè)都相同的情況下,才可以稱為同源。 下來(lái)就以 http://www.example.com/page.html 這個(gè)鏈接來(lái)比較說(shuō)...
閱讀 1338·2021-09-22 15:09
閱讀 2668·2021-08-20 09:38
閱讀 2408·2021-08-03 14:03
閱讀 873·2019-08-30 15:55
閱讀 3374·2019-08-30 12:59
閱讀 3556·2019-08-26 13:48
閱讀 1891·2019-08-26 11:40
閱讀 671·2019-08-26 10:30