2010-11-15 341 views
2

本机Ajax请求调用有一个奇怪的问题。发送Ajax请求时本地主机和IP地址的区别

我创建Ajax对象,并发送请求类似如下:

var xmlHttpObj = new XMLHttpRequest(); 

....

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

当我与URL类似http://localhost:8080/ajax...访问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请求本地主机与IP地址之间的差异。

回答

5

它比问题多安全功能的信息:

same origin policy防止 文档或脚本从一个起源 加载从获得或从另一个 原点设置文档的 性能。

localhost和192.168.16.254被认为是不同的来源。对于指向相同地址的两个主机名也是如此(可能会指向同一服务器上的其他站点/应用程序)。 AFAIK解决此问题的唯一方法是对内容使用iframe或对json使用JSONP。虽然在你的情况下,相对URL是要走的路。

相关问题