Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 同一域策略是如何强制执行的?_Ajax_Subdomain_Xss - Fatal编程技术网

Ajax 同一域策略是如何强制执行的?

Ajax 同一域策略是如何强制执行的?,ajax,subdomain,xss,Ajax,Subdomain,Xss,假设我有一个域,js.mydomain.com,它指向某个IP地址,另一个域,requests.mydomain.com,它指向另一个IP地址。从js.mydomain.com下载的.js文件能否向requests.mydomain.com发出Ajax请求 现代浏览器究竟是如何实施相同的域策略的?这不会起作用,因为主机名不同。如果两个页面具有相同的主机、协议和端口,则认为它们来自同一来源 从维基百科: 术语“来源”是使用 域名,应用层 协议,以及(在大多数浏览器中)TCP 运行 剧本考虑了两种资

假设我有一个域,
js.mydomain.com
,它指向某个IP地址,另一个域,
requests.mydomain.com
,它指向另一个IP地址。从
js.mydomain.com
下载的
.js
文件能否向
requests.mydomain.com
发出Ajax请求


现代浏览器究竟是如何实施相同的域策略的?

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

从维基百科:

术语“来源”是使用 域名,应用层 协议,以及(在大多数浏览器中)TCP 运行 剧本考虑了两种资源 当且仅当为同一来源 如果所有这些值都完全相同 一样


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

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

另一种方法是,将脚本标记插入到文档中。我相信这就是谷歌API的工作原理


您可以在这里找到关于同一原产地政策的详细说明:

谢谢!这帮了大忙——AJAST看起来是个不错的选择。FWIW,IE通常不关心端口。还值得一提的是,IP地址根本不重要(在任何浏览器中)——只有protcol/scheme、主机和(在某些情况下)端口决定了来源。这意味着来自同一IP的两个不同来源可能无法通信,而负载平衡器跨多个IP提供服务的同一来源可能无法通信。