这是因为浏览器强加的同源策略。请参阅
http://www.w3.org/Security/wiki/Same_Origin_Policy
http://en.wikipedia.org/wiki/Same_origin_policy
. 另请注意,未来 CORS 可能是比 JSONP 更好的选择
http://en.wikipedia.org/wiki/Cross-origin_resource_sharing
编辑: - - - - - -
如果您浏览了上述链接,您会看到 JSONP 允许用户解决浏览器强加的同源策略安全措施。
诀窍是浏览器允许标签引用除源之外的其他域中的文件。
基本上,使用 JSONP 会发生什么,您将回调函数名称发送到附加到查询字符串的服务器。然后服务器将通过调用此函数来填充或前缀它是 JSON 请求,因此名称中表示响应的 P 被填充或前缀。
例如,您可以创建一个脚本标签,如
那么目标服务器应该发送一个响应,使得
mymethod({normal: 'json response'})
当在客户端评估此响应时(对于任何其他 javascript 文件),它将有效地使用来自该服务器的 JSON 响应调用您的方法。
但是,这只能执行 GET 请求。
如果要发出 POST (PUT/DELETE) 请求,则需要使用 CORS,其中服务器需要事先设置特定的标头。
Access-Control-Allow-Origin: www.ext.site.com
希望这可以帮助。