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