13

假设我有一个域 ,js.mydomain.com它指向某个 IP 地址,而另一个域 ,requests.mydomain.com,它指向不同的 IP 地址。可以从发出 Ajax 请求.js下载的文件吗?js.mydomain.comrequests.mydomain.com

现代浏览器究竟是如何执行同域策略的?

4

2 回答 2

11

对您的问题的简短回答是否定的:对于 AJAX 调用,您只能访问与加载页面相同的主机名(和端口/方案)。

有两种解决方法:一种是创建一个 URL foo.example.com,作为bar.example.com. 只要主机名匹配,浏览器并不关心请求在哪里实际完成。如果您已经有一个前端 Apache 网络服务器,这不会太难。

另一种选择是AJAST,它通过将脚本标签插入文档来工作。我相信这就是 Google API 的工作方式。

您可以在此处找到关于同源策略的详细说明:http ://code.google.com/p/browsersec/wiki/Part2

于 2009-05-30T12:49:16.580 回答
1

这不起作用,因为主机名不同。如果两个页面具有相同的主机、协议和端口,则认为它们来自同一来源。

来自维基百科的同源政策

术语“来源”是使用域名、应用层协议和(在大多数浏览器中)运行脚本的 HTML 文档的 TCP 端口来定义的。当且仅当所有这些值完全相同时,才认为两个资源具有相同的来源。

于 2009-05-30T12:48:11.527 回答