Ajax请求跨域的理解(端口,域名,主机)

今天同事遇到个奇怪的问题,就是他用JQ的AJAX请求一个URL的时候,通过FIREBUG看到的返回状态时200,但是没有数据,而且那个请求时红色 的,就像返回回来的是404一样。我帮他调了很久,最后看到他浏览器的访问地址是www.xxx.com/xxx,而他AJAX请求的是 www.xxx.com:8080/xxx,端口不一致。我突然想到肯定是AJAX跨域,不过这个可是一个服务器,只是不同的端口而已。然后让他吧 8080去掉,就可以了。

 
经过几次测试,发现浏览器对AJAX跨域限制很严格,我有一个主机,IP为A,A上80端口,81端口都有服务,然后IP为A的主机上绑定了两个域 名,www.test.com 和www.test1.com,通过这两个IP都能方位到80的服务,但是如果在www.test.com上用AJAX请求www.test1.com的 URL,就不行。就属于跨域。同样,www.test.com上访问www.test.com:81的请求也是跨域。虽然是同一个主机,同一个IP,但是 只要域名不一致,甚至端口不一致,都属于跨域。
 
 
那么,如果一个主机上不同端口上部署有不同的服务,怎么用AJAX去调用呢?我的解决办法是通过中间层转发请求。比如www.test.com上要用 AJAX请求81的服务,就在80上写一个功能,请求80,把要传递的参数传给80,在由80的服务器端去发请求,将请求到的数据返回给AJAX.
 

Leave a Reply

Your email address will not be published.