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

Use*_*034 2 javascript ajax localhost ip-address request

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

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

var xmlHttpObj = new XMLHttpRequest();
Run Code Online (Sandbox Code Playgroud)

....

xmlHttpObj.open("GET","http://192.168.16.254:8080/ajax/demoExample.html",true);
xmlHttpObj.send();
Run Code Online (Sandbox Code Playgroud)

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

我用同样的方式调用了请求

xmlHttpObj.open("GET","http://localhost:8080/ajax/demoExample.html",true);
Run Code Online (Sandbox Code Playgroud)

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

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

我可以调用请求

xmlHttpObj.open("GET","../ajax/demoExample.html",true);
xmlHttpObj.send();
Run Code Online (Sandbox Code Playgroud)

那么我对localhost或IP地址没有任何问题.

但我仍然认为为什么ajax请求中localhost和IP地址之间的区别.

Dia*_*tis 6

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

同源策略阻止从一个原点加载从获取或设置从另一个起源上的文档属性的文档或脚本.

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