出于安全原因,浏览器对页面中的ajax请求(XMLHTTPRequest@H_403_3@)有同源策略的限制。@H_403_3@
@H_403_3@
@H_403_3@
@H_403_3@
比如说你的当前页面是http://www.example.com/test.html,那么这个页面中的只能发出@H_403_3@@H_403_3@@H_403_3@
http://www.example.com/ 下的请求。@H_403_3@
- 顶级域名不同。如 www.abc.com的页面中不能向 www.def.com发出http请求。@H_403_3@@H_403_3@
- IP与域名也被认为是不同的,即便他们是一回事。比如在开发的时候,你自己的本机局域网地址是192.168.1.106,你用 @H_403_3@localhost@H_403_3@ 打开当前页面,而页面中请求的却是192.168.1.106也不行的。总之,域名和IP被认为是不同的域名,包括 localhost ,所以要么全用域名,要么全用IP。@H_403_3@@H_403_3@
- 相同顶级域名,但二级域名不同也是不同的。这个要求对同一域名下的各个子服务之间访问造成了一些限制。比如 www.example.com 和 download.example.com 就是不同的,www.example.com 和 example.com也是不同的。不过javascript中允许设置@H_403_3@@H_403_3@document.domain 变量为 当前域名更短的域名,比如当前访问的是www.example.com,可以@H_403_3@@H_403_3@设置@H_403_3@@H_403_3@document.domain为example.com,这样就可以访问 example.com 下的请求。一种跨子域的解决方法就是,x子域的当前页面包括一个y子域的iframe,当前页面和这个frame分别将自己的@H_403_3@@H_403_3@document.domain设置为根域名,这样当前x子域的页面就可以通过这个y子域的页面代理访问y子域的请求。@H_403_3@
@H_403_3@