Ajax请求发送中localhost和IP地址的区别

时间:2010-11-15 06:24:26

标签: javascript ajax request ip-address localhost

我对本机Ajax请求调用有一个奇怪的问题。

我正在创建Ajax对象并发送如下请求:

var xmlHttpObj = new XMLHttpRequest();

...

xmlHttpObj.open("GET","http://192.168.16.254:8080/ajax/demoExample.html",true);
xmlHttpObj.send();

当我使用类似http://localhost:8080/ajax...的URL访问servlet时, 然后我无法在客户端获得响应。但我可以在服务器端看到响应。

我用

调用请求的方式非常类似
xmlHttpObj.open("GET","http://localhost:8080/ajax/demoExample.html",true);

我的网址为http://192.168.16.254:8080/ajax...,然后我也无法在客户端看到响应。

我知道解决问题的最佳方法。

我可以用

调用请求
xmlHttpObj.open("GET","../ajax/demoExample.html",true);
xmlHttpObj.send();

然后我对localhost或IP地址没有任何问题。

但我仍然认为为什么ajax请求中localhost和IP地址之间存在差异。

1 个答案:

答案 0 :(得分:5)

这更像是一个安全功能而不是一个问题:

  

same origin policy阻止a   从一个加载的文档或脚本   得到或设置的起源   另一个文档的属性   原点。

localhost和192.168.16.254被认为是不同的起源。对于指向同一地址的两个主机名也是如此,因为它们可能(并且可能会)指向同一服务器上的不同站点/应用程序。 AFAIK解决这个问题的唯一方法是使用iframe作为内容,或使用JSONP作为json。虽然在您的情况下,相对URL是可行的方法。