我试图了解浏览器(也是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