2016-05-21 71 views
0

我看到跨域Ajax調用,
安全風險,但我認爲真正的問題是,該瀏覽器
自動發送到目標跨域的cookie。同源策略的解決方案

那麼爲什麼瀏覽器不能在發送跨域 的請求時不發送cookie而不是完全阻止該請求呢?

我希望我的問題有道理。

編輯:

來自:https://en.wikipedia.org/wiki/Same-origin_policy

雖然這是事實,在JavaScript有向銀行 會話cookie不能直接訪問,但它仍然可以發送和接收請求到 銀行網站與銀行網站的會話cookie基本上 充當銀行網站的普通用戶。關於 新的交易,甚至CSRF保護通過銀行網站沒有 效果的發送,因爲該腳本可以簡單地做一樣的用戶會做

因此,假設我登錄Facebook和同時訪問一個奇怪的網站,使用跨站點請求Facebook來竊取關於我的信息, 我的意思是它可以做到這一點的唯一原因是因爲合法的cookie包含在瀏覽器的請求中,我錯了嗎?

回答

0

你有一個想法混亂。

cookie只是存儲在客戶端的緩存信息。簡而言之,它是由瀏覽器管理的數據,以及特定的瀏覽器是如何做的。例如,IE將Cookie存儲在單獨的文本文件中,Firefox使用單個文件,而Crome使用SQLite3數據庫。

我建議你閱讀:Why is the same origin policy important?

您可以發送跨域請求獲取並有幾種方法。我使用了一個代理來添加所需的頭文件或只是Jsonp。例如.net後者需要添加一個獲取json回調函數的json格式器。

如果您與網頁進行雙向通信,則不需要這些。您可以管理服務器端的狀態,並按照您的意願執行服務器端「推送」請求。在html5之前,你需要組件去做那些事情:java applet,flash,silverlight或....

我希望我的回答對你有意義。

+0

請參閱我的編輯。 – GionJh