我正在尝试理解浏览器中的同源策略(同时也是JavaScript新手),在维基百科上遇到了JSONP页面。它是如何工作的部分说:
现在,考虑到可以指定任何URL,包括返回JSON的URL,作为元素的src属性。这意味着可以通过HTML页面中的脚本元素检索JSON。
但是,JSON文档不是JavaScript程序。如果它要在元素中由浏览器评估,则来自src URL的返回值必须是可执行的JavaScript。在JSONP使用模式中,URL返回动态生成的JSON,并用函数调用包装它。这是JSONP的“填充”(有时称为“前缀”)。
我的问题是 -
- XMLHTTPRequest()是否只返回javascript或html?它不能返回纯json文档吗?
- 我认为同源策略不适用于XMLHttpRequest()调用。为什么需要将一个标签注入DOM以调用第三方服务器?这是所有广告插件用来收集数据的方式吗?
- 最终,我完全不理解JSONP。有人能解释一下或者给我推荐一个更好的解释吗?
谢谢,
- P