我試圖瞭解瀏覽器(也是Javascript新手)中的同一個源策略,並且跑到了wikipedia上的JSONP頁面。 How It Works部分說 -JSONP和XMLHttpRequest問題
現在,考慮可以指定任何URL,包括返回JSON的URL作爲元素的src>屬性。這意味着可以通過> HTML頁面中的腳本元素來檢索JSON。
但是,JSON文檔不是JavaScript程序。如果要由瀏覽器在元素中進行評估,則src URL的返回值必須是可執行的JavaScript。在JSONP使用模式中,URL返回動態生成的JSON,並在其中包含函數調用。這是JSONP的「填充」(或有時是「前綴」)。
我的問題是 -
- 所以是的XMLHTTPRequest()應該返回只有JavaScript或HTML?它可以不返回純json文件嗎?
- 我認爲相同的源策略不適用於XMLHttpRequest()調用。爲什麼需要在DOM中注入標籤以撥打第三方服務器?那麼網站上的所有廣告插件是如何呼叫家庭收集數據的?
- 最後,我完全不理解JSONP。有人可以解釋一下嗎,或者請我介紹一下更好的解釋?
感謝,
- P
很好的答案。我會補充/澄清什麼使JSONP腳本源特別是它包含一個回調函數,因此它可以調用/影響您自己的腳本。 – Matt
感謝您的回答!我也理解現在這篇文章中提到的XSS。 – user220201