2011-03-21 84 views
11

除了JSONP之外,爲什麼還要遵循相同的域策略?爲什麼不允許跨域AJAX調用?

+0

的DUP:爲什麼AJAX請求僅限於同一域?(http://stackoverflow.com/questions/3156710)和[爲什麼跨域Ajax存在安全問題?( http://stackoverflow.com/questions/466737) – 2011-03-21 20:12:53

+0

可能重複的[反跨域策略是什麼?](http:// stackoverflow。com/questions/3113253/what-the-point-of-the-anti-cross-domain-policy) – 2011-03-21 20:13:17

回答

11

出於安全原因已實施相同來源策略;從wikipedia引用了相關的句子:

該機制承擔的是大量關於HTTP餅乾取決於 保持 身份驗證的用戶會話現代Web 應用程序特定 意義,因爲 服務器行爲基於HTTP cookie的 信息以顯示敏感信息或採取變化 行動。
嚴格分離 內容之間提供的無關 網站必須保持在客戶端 方,以防止數據丟失保密性或完整性。

基本上,你不希望任何給定網站不要(像任何網站,你可能會衝浪 - 我們都知道人有時候,你不應該信任的網站到達)能夠訪問數據從任何其他人(如您的網絡郵箱,或社交網絡帳戶)

+2

通過使用新鮮的Cookie,難以避免安全問題? – 2014-08-04 21:55:39

6

因爲Same origin policy

存在同源策略以防止惡意使用資源。如果沒有管理跨域腳本訪問的規則,那麼對毫無戒心的用戶造成任何破壞都是微不足道的。例如,對於惡意網站來說,抓取您的會話信息到另一個網站並代表您執行操作很容易。

舉一個例子,看看這個:

你去你喜歡的網絡郵件程序 - 它可能是Gmail,雅虎郵件,Hotmail或私人公司內部網絡郵件程序。

登錄並檢查您的電子郵件後,單擊指向在新選項卡中打開的惡意網站的鏈接。

惡意網站檢查http referer並發現您來自您的電子郵件帳戶。

使用跨域腳本,惡意網站會回到您的電子郵件標籤中,並下載您的地址簿和所有電子郵件(或關閉彈出窗口之前可以獲得的很多電子郵件)。

隨後,在掃描您的電子郵件以查找密碼,財務數據和其他敏感材料之後,它會向您的所有聯繫人發送一封來自您批註同一站點的電子郵件。 這只是一個例子。一個更陰險的情節將涉及一個惡意的第三方使用您的瀏覽器蜘蛛您的公司的內聯網,泄露機密信息作爲你的不知情的幫兇!

更多關於http://jimbojw.com/wiki/index.php?title=Introduction_to_Cross-Domain_Ajax