Я не уверен, что проблема связана с технологией или моим пониманием технологий.
У меня есть приложение html5, написанное в javascript и html, размещенном на сервере apache 2.2.
У меня есть Java-приложение, написанное в java, используя причал, guice, jackson, jersey, на котором размещена простая служба REST.
Оба приложения запускаются в одном и том же поле, один на порт 80 (приложение с чистым html5, размещенном на apache), другое на 8080 (чистое приложение Java, размещенное на причале/графике)
Я считаю, что ответ в заголовках отправляется обратно. Заголовки CORS сообщают браузеру, что вы разрешаете внешним приложениям ударять ваш api. Я не могу понять, как настроить мой Jetty, сервер Guice, чтобы вернуть правильные заголовки CORS.
Я использую встроенный сервер Jetty, поэтому у меня нет файла web.xml для добавления заголовков.
Это также может быть связано с тем, как сервер приложений HTML5 (в данном случае apache 2.2) обслуживает приложение.
В файле apache httpd.conf имеется запись:
LoadModule headers_module modules/mod_headers.so
<IFModule mod_headers>
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE, HEAD
Header add Access-Control-Allow-Headers: X-PINGOTHER
Header add Access-Control-Max-Age: 1728000
</IfModule>
в моей конфигурации серфинга guice у меня есть следующее:
public class RestModule extends ServletModule{
@Override
protected void configureServlets() {
bind(QuestbookService.class);
// hook Jersey into Guice Servlet
bind(GuiceContainer.class);
// hook Jackson into Jersey as the POJO <-> JSON mapper
bind(JacksonJsonProvider.class).in(Scopes.SINGLETON);
Map<String, String> guiceContainerConfig = new HashMap<String, String>();
guiceContainerConfig.put(ResourceConfig.PROPERTY_RESOURCE_FILTER_FACTORIES,
HttpStatusCodeMetricResourceFilterFactory.class.getCanonicalName());
serve("/*").with(GuiceContainer.class, guiceContainerConfig);
}
}
Я думаю, что проблема в моем графическом конфиге, так как у меня нет места для установки заголовков ответов.
Я использую встроенный сервер причала, и, таким образом, я решил, что режим dev будет обходить всю проверку, но я мог ошибаться.
Спасибо за любые советы.