因爲它是直接使用JSONP在腳本標籤從不同領域獲取數據,我們不應該讓XMLHttpRequest來做到這一點呢?聲稱它可以加強安全性是沒有什麼意義的,儘管它有可能解決這個問題,儘管語義更加混亂。當腳本標籤工作時,爲什麼禁止跨域ajax?
回答
JSONP只有在供應商允許它的工作原理。
如果跨域AJAX的工作,第一問題之一是人們張貼到其他領域,希望你有一個身份驗證的帳戶存在。這是CSRF。
,他們可以得到一個網頁認證爲你,把你的令牌,然後POST與令牌(它告訴應用程序,這是一個內部請求)什麼惡意。
我真的很驚訝有多少開發人員不知道CSRF。 – corrodedmonkee 2011-02-23 12:37:03
好點。但是,似乎改進XMLHttpRequest比腳本標記黑客更好。爲什麼不給它自己的cookie環境? – henle 2011-02-23 12:48:57
@henle你可以通過IP或GET參數傳遞身份驗證。 – alex 2011-02-23 13:09:00
實際上,JSOP是一個聰明的解決方法,它可以解決同一起源策略的侷限性,但是它基本上是一個自我交叉的腳本攻擊(請記住,JSONP通過使用腳本標記而不是XHR來完成,在你的整個頁面上傳給你的JSONP數據提供者 - 通常他們不是邪惡的,但有時他們無能爲力,所以記住)。
關於如何在新版本的ECMAScript中修復相同的原產地策略有很多討論,因爲如果必須規避任何種類的混搭,它顯然不起作用。我認爲一個有趣的想法是有一個更便宜的XHR版本,它不會發送cookie或無用的標題,所以能夠防止跨站請求僞造攻擊,但仍然允許安全混搭,而不會讓數據提供者完全訪問您的頁面。但我們仍然需要等待。
對,禁止(或沙箱)餅乾和任何頭可以濫用請求到外國領域。這聽起來不太難以解決。雖然XHR不是由ECMAScript定義的,但它由W3C定義。 – henle 2011-02-23 16:54:06
- 1. AJAX跨域腳本標籤
- 2. 使用腳本標記跨域AJAX
- 3. 獲取跨域腳本標籤
- 4. 用ajax改變腳本標記,爲什麼還在工作?
- 5. 跨域AJAX導致403禁止
- 6. 跨域AJAX不工作PHP
- 7. 爲什麼跨域ajax後無效?
- 8. 爲什麼我在使用img標籤時遇到403禁止?
- 9. 爲什麼跨域AJAX請求被標記爲「安全風險」?
- 10. 爲什麼我的基本Ajax腳本不工作?
- 11. 爲什麼我的基本Ajax腳本不能正常工作?
- 12. 爲什麼Ajax腳本不能在本地工作?
- 13. 爲什麼不是鉻標籤工作?
- 14. 條件標籤不工作,爲什麼?
- 15. 爲什麼jsonp與跨域ajax()調用不起作用?
- 16. 簽名腳本做跨域查詢
- 17. 爲什麼這個非常簡單的AJAX腳本不工作
- 18. 爲什麼這個非常簡單的跨域的jQuery AJAX不工作
- 19. JavaScript腳本停止工作,我不明白爲什麼?
- 20. 爲什麼我的鬧鐘腳本停止工作?
- 21. 爲什麼這個腳本不工作?
- 22. 爲什麼sh腳本不能工作
- 23. 爲什麼java腳本不工作?
- 24. 爲什麼這行腳本不工作?
- 25. 跨域iframe腳本
- 26. 爲什麼這些空的腳本標記會阻止我的頁面工作?
- 27. 如何刪除跨域ajax添加的腳本標記?
- 28. AJAX xhr.upload.addEventListener不工作的跨域調用
- 29. 跨域AJAX請求不工作:(
- 30. AJAX跨域jQuery的不工作
您需要了解同源策略,我建議谷歌瀏覽器的安全手冊。 – rook 2011-02-23 19:23:38