假设我有一个域 ,js.mydomain.com
它指向某个 IP 地址,而另一个域 ,requests.mydomain.com
,它指向不同的 IP 地址。可以从发出 Ajax 请求.js
下载的文件吗?js.mydomain.com
requests.mydomain.com
现代浏览器究竟是如何执行同域策略的?
对您的问题的简短回答是否定的:对于 AJAX 调用,您只能访问与加载页面相同的主机名(和端口/方案)。
有两种解决方法:一种是创建一个 URL foo.example.com
,作为bar.example.com
. 只要主机名匹配,浏览器并不关心请求在哪里实际完成。如果您已经有一个前端 Apache 网络服务器,这不会太难。
另一种选择是AJAST,它通过将脚本标签插入文档来工作。我相信这就是 Google API 的工作方式。
您可以在此处找到关于同源策略的详细说明:http ://code.google.com/p/browsersec/wiki/Part2
这不起作用,因为主机名不同。如果两个页面具有相同的主机、协议和端口,则认为它们来自同一来源。
来自维基百科的同源政策:
术语“来源”是使用域名、应用层协议和(在大多数浏览器中)运行脚本的 HTML 文档的 TCP 端口来定义的。当且仅当所有这些值完全相同时,才认为两个资源具有相同的来源。