Подтвердить что ты не робот

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 он будет высоко оценен:)

4b9b3361

Ответ 1

Вам необходимо использовать URL-адрес, относящийся к домену, в вашем запросе Ajax:

/Dinamicki1/UsernameServlet?username=zik

Или контекстно-зависимый URL (при условии, что страница обслуживается от /Dinamicki1):

UsernameServlet?username=zik

Что касается "Ajax tutorial for Java", то на самом деле на самом деле это не так. Это всего лишь две отдельные технологии. Я бы рекомендовал начать с jQuery (для клиентской стороны) и Google Gson (для серверной части) и JSON (в качестве языка общения между клиентом и сервером).

Ответ 2

Вы не можете использовать AJAX для чтения ответов из других доменов.

Ваш HTML должен находиться на одном сервере (и том же домене, порту и протоколе) в качестве сервлета AJAX.

Ответ 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: "*")]