Как решить проблему происхождения JavaScript с помощью приложения и статического файлового сервера

В системе, которую я создаю, я хочу служить

  1. Статические файлы (статические HTML-страницы и множество изображений) и
  2. Динамический XML, сгенерированный моим сервлетом.

Динамический XML генерируется из моей базы данных (через Hibernate), и я использую Restlets для его обслуживания в ответ на вызовы API. Я хочу создать статический файловый сервер (например, Apache), чтобы он не мешал динамическому трафику сервера. В настоящее время оба сервера должны работать на одной и той же машине.

Я никогда не делал ничего подобного раньше, и здесь я застрял:

Статические HTML-страницы содержат JavaScript, который выполняет вызовы API на динамический сервер. Однако, поскольку два сервера работают на разных портах, я столкнулся с одной и той же проблемой происхождения. Как это решить?

В качестве бонуса, если вы можете указать мне какие-либо ресурсы, которые объясняют, как создать такую ​​систему обслуживания статического/динамического контента, я буду счастлив.

Спасибо!


person recipriversexclusion    schedule 28.04.2010    source источник
comment
Является ли размещение обоих серверов позади Tomcat хорошей идеей? Затем Tomcat может направлять запросы статических и динамических файлов на соответствующие серверы. Кроме того, все клиентские запросы будут направляться на один и тот же IP-адрес, решит ли это проблему?   -  person recipriversexclusion    schedule 29.04.2010


Ответы (2)


Вы должны настроить mod_proxy в apache для пересылки динамических запросов на любой внутренний сервер, который вы используете. Ваша существующая настройка (т.е. два отдельных порта) идеальна, вам просто нужно сказать apache «проксировать динамические запросы на мой внутренний сервер, не сообщая об этом браузеру».

Эта страница поможет вам начать работу: http://httpd.apache.org/docs/1.3/mod/mod_proxy.html

person Sripathi Krishnan    schedule 28.04.2010
comment
Спасибо Шри. Один вопрос: если я сделаю это, буду ли я по-прежнему реализовывать подход JSON, или в этом случае исчезнет та же проблема с политикой происхождения? - person recipriversexclusion; 29.04.2010
comment
Это уходит. Вы настроите apache для проксирования шаблонов URL-адресов, таких как /backend/*, на ваш внутренний сервер. Поскольку браузер не знает о двух серверах, проблема политики одного и того же источника исчезает. - person Sripathi Krishnan; 29.04.2010
comment
Отлично, я установил Apache2 и mod_proxy, теперь работаю над этим. Спасибо за комментарии. - person recipriversexclusion; 30.04.2010
comment
УРА, это работает. Маленький шаг для человечества, огромное облегчение для меня! - person recipriversexclusion; 30.04.2010

Вам нужно загрузить тег script с сервера Reslet... взгляните на JSONP и этот сообщение SO

person danswain    schedule 28.04.2010