假设我有一个域js.mydomain.com
,它指向某个IP地址,以及指向不同IP地址的其他域requests.mydomain.com
。从.js
下载的js.mydomain.com
文件是否可以向requests.mydomain.com
发出Ajax请求?
现代浏览器如何实施相同的域策略?
答案 0 :(得分:11)
对您的问题的简短回答是否定的:对于AJAX调用,您只能访问与加载页面相同的主机名(和端口/方案)。
有几种解决方法:一种是在foo.example.com
中创建一个充当bar.example.com
反向代理的网址。只要主机名匹配,浏览器就不关心实际请求的实际位置。如果您已经拥有一个前端Apache Web服务器,这将不会太困难。
另一种选择是AJAST,它通过在文档中插入脚本标记来实现。我相信这就是Google API的运作方式。
您可以在此处找到相同原始政策的良好说明:http://code.google.com/p/browsersec/wiki/Part2
答案 1 :(得分:1)
这不起作用,因为主机名不同。如果两个页面具有相同的主机,协议和端口,则认为它们来自同一来源。
来自维基百科the same origin policy:
术语“起源”是使用 域名,应用层 协议,以及(在大多数浏览器中)TCP 运行该文件的HTML文件的端口 脚本。考虑两种资源 当且仅限于同一来源 如果所有这些值都是正确的 相同。