Разница между localhost и IP-адресом при отправке Ajax-запроса - PullRequest
2 голосов
/ 15 ноября 2010

У меня странная проблема с вызовом нативного Ajax-запроса.

Я создаю объект 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..., тогда я не могу получить ответ на стороне клиента. Но я вижу ответ на стороне сервера.

Схожим образом я вызвал запрос с помощью

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

и мой URL-адрес http://192.168.16.254:8080/ajax..., тогда я также не смогу увидеть ответ на моей стороне клиента.

Я знаю лучший способ решить проблему.

Я могу вызвать запрос с

xmlHttpObj.open("GET","../ajax/demoExample.html",true);
xmlHttpObj.send();

тогда у меня нет проблем ни с локальным хостом, ни с IP-адресом.

Но все же я думаю, почему разница между localhost и IP-адресом в запросе ajax.

1 Ответ

6 голосов
/ 15 ноября 2010

Это скорее функция безопасности, чем проблема:

Политика с тем же источником предотвращает получение или установку свойств документа из скрипта, загруженного из одного источникадругое происхождение.

localhost и 192.168.16.254 считаются разными источниками.То же самое касается двух имен хостов, которые указывают на один и тот же адрес, поскольку они могут (и, вероятно, будут) указывать на другой сайт / приложение на одном и том же сервере.AFAIK единственный способ обойти это - использовать iframe для содержимого или JSONP для json.Хотя в вашем случае относительные URL - это путь.

...