【发布时间】:2011-10-14 09:47:18
【问题描述】:
我试图了解浏览器(以及 Javascript 新手)中的同源策略并遇到了 wikipedia 上的 JSONP 页面。 How It Works 部分说 -
现在,考虑可以指定任何 URL,包括返回 JSON 的 URL,作为元素的 src > 属性。这意味着可以通过 HTML 页面中的脚本元素检索 JSON。
但是,JSON 文档不是 JavaScript 程序。如果要在元素中由浏览器评估,则来自 src URL 的返回值必须是可执行的 JavaScript。在 JSONP 使用模式中,URL 返回动态生成的 JSON,并在其周围包裹一个函数调用。这是 JSONP 的“填充”(或有时是“前缀”)。
我的问题是 -
- 那么 XMLHTTPRequest() 应该只返回 javascript 或 html 吗?不能返回纯json文档吗?
- 我认为同源策略不适用于 XMLHttpRequest() 调用。为什么需要在 DOM 中注入标签来调用第三方服务器?网站的所有广告插件都是这样收集数据的吗?
- 最后我根本不懂 JSONP。有人可以解释一下,或者请我参考更好的解释吗?
谢谢,
-p
【问题讨论】:
标签: javascript xmlhttprequest jsonp