同源策略


同源策略含義:

同源政策由 Netscape 公司引入瀏覽器。目前,所有瀏覽器都實行這個政策。所謂“同源”指的是“三個相同”:協議,域名,端口(這點可以忽略)

注意,標准規定端口不同的網址不是同源(比如8000端口和8001端口不是同源),但是瀏覽器沒有遵守這條規定。實際上,同一個網域的不同端口,是可以互相讀取 Cookie 的。

同源策略目的:

為了保證用戶信息的安全,防止惡意的網站竊取數據。

設想這樣一種情況:A 網站是一家銀行,用戶登錄以后,A 網站在用戶的機器上設置了一個 Cookie,包含了一些隱私信息。用戶離開 A 網站以后,又去訪問 B 網站,如果沒有同源限制,B 網站可以讀取 A 網站的 Cookie,那么隱私就泄漏了。更可怕的是,Cookie 往往用來保存用戶的登錄狀態,如果用戶沒有退出登錄,其他網站就可以冒充用戶,為所欲為。因為瀏覽器同時還規定,提交表單不受同源政策的限制。

由此可見,同源政策是必需的,否則 Cookie 可以共享,互聯網就毫無安全可言了。

如果是非同源,限制范圍:

(1) 無法讀取非同源網頁的 Cookie、LocalStorage 和 IndexedDB(補充:IndexedDB提供了類似數據庫風格的數據存儲和使用方式,IndexedDB很適合存儲大量數據,它的API是異步調用的。IndexedDB使用索引存儲數據)

(2) 無法接觸非同源網頁的 DOM。

(3) 向非同源地址發送 AJAX 請求瀏覽器會拒絕響應。

 不同源如何拿到Cookie?

Cookie 是服務器寫入瀏覽器的一小段信息,只有同源的網頁才能共享。如果兩個網頁一級域名相同,只是次級域名不同,瀏覽器允許通過設置document.domain共享 Cookie。

 

注意,這種方法只適用於 Cookie 和 iframe 窗口

 不同源怎么發送AJAX請求?

同源政策規定,AJAX 請求只能發給同源的網址,否則就報錯。

除了架設服務器代理(瀏覽器請求同源服務器,再由后者請求外部服務),有三種方法規避這個限制:JSONP,WebSocket , CORS

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM