2012-04-23 2 views
0

Я пытаюсь сделать JQuery $.post сервлетом Java. Я интегрировал сервер Tomcat в Apache, и если Tomcat-сервер находится на том же компьютере, что и Apache, $.post. (Сервлет Java получает его).Сообщение JQuery для Servlet Tomcat

Если сервлет Tomcat находится на удаленной машине, и если я делаю $.post(http://ip:8080/App/MyServlet,...), сервлет ничего не получит.

Если у меня есть JQuery $.post на моей машине, мне нравится $.post(Myservlet,.....). Если я так пробую: $.post(http://localhost:8080/App/MyServlet,...) не работает.

Как я могу сделать JQuery $.post удаленному uri?

Как должен выглядеть удаленный uri для сервлета Tomcat?

Спасибо,

+1

Есть перекрестные ограничения домена: http://stackoverflow.com/questions/298745/how-do-i-send-a-cross-domain-post-request-via-javascript – binarious

ответ

2

Jquery работает в браузере (на стороне клиента), что означает, что он в соответствии с политикой одного источника браузера, который является хорошей вещью.

Это означает, что запросы ajax, которые являются GET или POST, могут быть сделаны только в домене страницы, задающей запрос ajax.

Существует 2 способа обойти политику. Первый заключается в том, чтобы удаленный сервер поручился за запрос, второй - прокрасться по политике одного и того же происхождения браузера.

Так что если у вас есть контроль над удаленным сервером, или если администратор, который делает принимает запросы, чтобы открыть сервер/домен foriegn Ajax запросов, то сервер просто нужно отправить следующий заголовок:

Access-Control-Allow-Origin: your-local-domain.org 

Браузер возвращает ответный заголовок, видит, что запрашивающая страница находится в приведенном выше списке и позволяет выполнить ответ.

Если вы не имеете никакого контроля над удаленным сервером, вот хитрее способы обойти то же происхождение политики:

  1. Сделать АЯКС запрос на локальный URL с параметрами, и он проходит это вместе с сервлетом, и пусть этот прокси-скрипт вернет все, на что отвечает сервлет.

  2. JSONP (который я все еще нечеткий на, если честно, но Аякс документация JQuery идет в него)

  3. инъекции сценария, где вы использовать тот факт, что элемент сценария src не ограничиваются по кампании с таким же происхождения.

Из 3, я думаю, что первое является самым безопасным, наименее хаком, и самым честным (так сказать), но JSONP стал простым и легким способом вытянуть из запроса междоменного в JQuery ,

+2

Вы забыли упомянуть ' Access-Control-Allow-Origin' – binarious

+1

О, черт! Тот, кто наименее хакерский и наиболее преднамеренный из всех! Добавление с смущением. – Anthony

+0

Добавлено, спасибо за головы. Не стесняйтесь комментировать, если вы думаете, что мое объяснение заголовка недостаточно глубже. – Anthony

Смежные вопросы