我們知道瀏覽器的主要工作是把HTML、JavaScript等文件從服務器端取下來,然后解析、渲染,展示給人類。
同時瀏覽器還需要保存cookie,網站會把cookie發給瀏覽器,等到訪問同一個網站的時候,會把cookie發過去 。這個Cookie的作用是用來證明用戶已經與服務器交互過了,更重要的是證明已經登錄過系統了。
JavaScript的主要作用是對DOM樹修改,已經利用AJAX訪問服務器端
但是安全的問題還沒有解決。
## 跨域訪問
有一天,用戶登錄了icbc網站,網站回復了一個Cookie ,證明用戶登錄過。
但是用戶忘了退出,又登錄了一個釣魚網站。
釣魚網站居然想訪問icbc的Cookie。
按照道理來說Cookie不能隨便給別人,因為這樣的話,黑客不用登錄就可以冒充用戶在icbc上做操作了。
## iframe
現在瀏覽器已經很小心,不會把別的網站的cookie發給JavaScript了。
但是釣魚網站改變了策略,它用iframe放置了一個淘寶的登錄頁面
用戶一不小心輸入了自己的用戶名和密碼。這樣的用戶名和密碼就被提交到了釣魚網站中。

## 同源
雖然瀏覽器控制不了人類的行為,但是可以讓瀏覽器增加安全性。
于是,所有瀏覽器增加了一條鐵規:
**除非兩個網頁是來自于統一源頭,否則不允許一個網頁的JavaScript訪問另一個網頁的內容,比如Cookie,DOM等**
也就是如果兩個網頁不同源,就被隔離了。
那什么叫同一個**源頭**?
也就是說`{protocol , host , port}`必須一樣。
比如說有這么一個網頁: http://www.store.com/product/page.html, 下面的表格列出了各種不同情況。”

但是問題又來了。
比如說http://www.store.com/ ,這個頁面有一段裝載的jquery.js的代碼:
```
<script src="//static.store.com/jquery.js >
```
這個 jquery.js 是來自于不同的源(**static**.store.com), 難道他就沒法操作 www.store.com 頁面的內容了嗎? 如果不能操作,這個 jquery.js 就沒有任何用處了。
所以可以開個口子,對于使用使用 < script src='xxxxx'> 加載的 JavaScript,我們認為它的源屬于 www.store.com, 而不屬于 static.store.com,這樣就可以操作 www.store.com 的頁面了
其實這種 “嵌入式” 的跨域加載資源的方式還有 <img>,<link> 等,相當于瀏覽器發起了一次 GET 請求,取到相關資源,然后放到本地而已。
## 分布式
隨著網絡流量增加,大部分系統都拆分成分布式的,每個系統都有子域名,像 login.store.com, payment.store.com ,雖然二級域名不同,但是他們屬于一個大的系統,但是由于同源策略的鐵規,cookie不能在每個系統之間共享。
那么只能再開一個口子,如果兩個網頁的一級域名是相同的,他們可以共享 cookie, 不過 cookie 的 domain 一定要設置為那個一級域名才可以,例如:`document.cookie = 'test=true;path=/;domain=store.com'`
## AJAX
我們知道javaScript可以創建一個XMLHttpRequest對象去異步訪問服務器端提供的服務,做到局部刷新頁面。
但是這個 XMLHttpRequest 對象只能訪問源服務器(如 book.com),不能訪問其他服務器 (如 beauty.com)?

那怎么辦?
可以通過**服務器中轉**
可以通過服務器端中轉啊,例如你是來自 book.com 的, 現在想訪問 movie.com,那可以讓那個 book.com 把請求轉發給 movie.com ,這就是代理

但是如果瀏覽器要訪問多個不同源的系統,要是都通過 book.com 中轉,該多麻煩!”
既然服務器(domain)之間是互信的,那一個服務器 (domain) 可以設置一個白名單,里邊列出它允許哪些服務器 (domain) 的 AJAX 請求。
假設 movie.com 的白名單中有 book.com, 那當屬于 book.com 的 JavaScript 試圖訪問 movie.com 的時候,瀏覽器做點手腳,悄悄地把當前的源 (book.com) 發過去,詢問下 movie.com, 看看他是否允許瀏覽器訪問,如何允許,就繼續訪問,否則就報錯!

這樣以來,那些黑客就沒有辦法假冒用戶向這些互信的服務器發送請求了, 我把這個方法叫做 Cross Origin Resource Sharing,簡稱** CORS**,只不過這個方法需要服務器的配合了”