提示:本文僅做爲我的平時記錄總結使用,筆法粗糙,邏輯思路還不是很清晰,如能幫到您是榮幸之至;如能指正其中錯誤和不合理,則萬分感謝!css
同源策略:同源策略限制了從同一個源加載的文檔或腳本如何與來自另外一個源的資源進行交互。這是一個用於隔離潛在惡意文件的重要安全機制。老生常談了,所謂同源就是origin、protocol、port都相同,是web安全的基礎。本文主要記錄以前不注意的點。node
我理解分爲DOM同源策略和存儲同源策略web
分爲三類ajax
或者能夠總結說是:json
同源策略容許HTML tag產生的跨域讀取、寫入、嵌入;可是不支持JavaScript腳本中產生的跨域讀取、寫入或嵌入canvas
咱們平時說到的跨域問題大可能是指在第三種。說下跨域的解決方案api
存儲包括localstorage(or sessionStorage)、indexDB、cookie等。其中localstorage和indexDB都嚴格執行同源策略,非同源不能讀寫。但cookie有不一樣的策略。跨域
對於cookie是子域名 讀寫 父域名下的cookie的,可是父域名不能讀子域名cookie,子域名之間也不能相互讀取cookie。安全
這樣看來其實同源策略對於並非對全部請求都有作限制,主要仍是限制在XMLHttpRequest、Fetch Api以及web字體的引用(是的你沒看錯,@font-face使用字體時要考慮跨域問題)、canvas中drawImage還有WebGL貼圖上。其餘的都沒什麼限制,可是當獲取的腳本或者其餘資源是惡意的也是會帶來很大問題的,好比script腳本引入了一個未知域名下的惡意腳本,可是同源策略對script資源的請求時不限制的,因此惡意腳本能夠輕鬆加載,通常這種狀況涉及到web安全問題了(XSS、CSRF等),針對這種狀況的對策是CSP即內容安全策略,相似一種加白名單的形式來完成這些事。cookie
參考文獻