Ajax - 200 OK в firebug, но красное сообщение без тела ответа
У меня есть небольшая проблема ajax, связанная с перекрестной доменой, как я ее вижу.
В localmachine я создал html-пример с некоторым ajax:
в поле ввода текстового поля пользователя "имя пользователя",
на каждое нажатие клавиши ajax отправляет его
локальный Tomcat, где сервлет проверяет, используется ли это имя пользователя
и отправляет ответ "назад".
Никаких проблем с локальным хостом.
Как только я набираю, используется "имя пользователя", сервлет отправляет "взятый" ответ
и браузер отображает его.
Но, когда я помещаю тестовую html-страницу с ajax
на удаленной машине (некоторый бесплатный хостинг в удаленной сети)
который отправляет запрос проверки на мой localhost Tomcat,
соединение сделано,
в консоли Tomcat я вижу запрос,
и в firebug в Mozzila это консоль:
GET http://89.216.182.25:8080/Dinamicki1/UsernameServlet?username=zik 200 OK
... но в ответной вкладке
нет ответа сервлета "взято"
и сообщение в firebug в красном цвете
Итак, серверы хорошо обмениваются сообщениями, без проблем с брандмауэром, ответ 200 OK
Но тело ответа пусто.
Любые идеи, что это красные сообщения в firebugs?
Спасибо вам заблаговременно.
И если кто-нибудь может порекомендовать какой-то серьезный учебник по аяксам для java
он будет высоко оценен:)
Ответы
Ответ 1
Вам необходимо использовать URL-адрес, относящийся к домену, в вашем запросе Ajax:
/Dinamicki1/UsernameServlet?username=zik
Или контекстно-зависимый URL (при условии, что страница обслуживается от /Dinamicki1
):
UsernameServlet?username=zik
Что касается "Ajax tutorial for Java", то на самом деле на самом деле это не так. Это всего лишь две отдельные технологии. Я бы рекомендовал начать с jQuery (для клиентской стороны) и Google Gson (для серверной части) и JSON (в качестве языка общения между клиентом и сервером).
Ответ 2
Вы не можете использовать AJAX для чтения ответов из других доменов.
Ваш HTML должен находиться на одном сервере (и том же домене, порту и протоколе) в качестве сервлета AJAX.
Ответ 3
Статус 200, сообщаемый в Firebug, не указывает на достоверность межсетевого аякс-звонка, успешно или нет.
Возможно, вы захотите попробовать использовать прокси-метод для выполнения вызова.
например. JavaScript: использование веб-прокси для междоменных вызовов XMLHttpRequest
Ответ 4
Я понял, как его решить из этот сайт:
-
"Чтобы разрешить просмотр каталогов через Apache Tomcat, измените параметр" списки "в файле conf/web.xml с false на true."
-
Вызовите свою страницу не как C:/Documents and Settings/.../page.html
, а как localhost:8080/your_servlet_name
(страница лучше названа index.html
).
Таким образом, вы сможете сделать запросы AJAX localhost:8080/your_servlet_name/something_else
.
Ответ 5
Решение, которое работало для меня, состояло в том, что я должен был добавить "www" к URL-адресу! Я использовал URL Rewrite, поэтому каждый URL-адрес, который у меня был (изображение, js, get, load, post), мне нужно было использовать полный URL-адрес, но ему не хватало "www"!
Ответ 6
Для меня это был запрос web api (С#.NET), и cors не был включен.
Добавлен заголовок для контроллера на контроллере, и он решил проблему.
[EnableCors(origins: "*", headers: "*", methods: "*")]