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