2015-10-14 2 views
0

У нас есть веб-сервер tomcat (server1), на котором размещается несколько веб-страниц, содержащих JavaScripts, для вызова интерфейсных API, размещенных на другом веб-сервере (server2).Проблема с CORS с Tomcat

Когда я навигации по веб-страниц на server1, он бросает ошибку -

«Cross-Origin Request заблокированное:. То же Origin Policy Запрещает чтение удаленного ресурса на server2/API (Причина: запрос CORS не смогли)."

Когда я звоню на api на сервере2 непосредственно с клиента POST, я могу получить ответ.

Я понимаю, что мы должны включить CORS на сервере. Но на каком сервере мы должны включить CORS? Будет ли сервер Tomcat (server1), на котором размещаются веб-страницы, или сервер API (server2), на котором размещены API?

Кроме того, мы попытались включить CORS на Tomcat, добавив фильтры в соответствии с http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#CORS_Filter , но это не помогло.

Просьба сообщить.

С уважением, Ritwik

+0

будет сервер (API сервер2). Он должен работать, если вы настроите его правильно, но вам нужно предоставить дополнительную информацию о настройке на сервере2 для любого, кто сможет вам помочь - что служит вашему API? Сервлеты? Любая структура? Вы правильно указали пути? и т. д. – CupawnTae

+0

вы можете проверить [здесь] (http://enable-cors.org/server_tomcat.html) – kuldipem

+0

@CupawnTae, вопрос о последующем вопросе - почему этот запрос не достигает даже сервера server2? Я вижу запрос, поступающий в server1 и возвращающий http304. Но я даже не вижу запроса, входящего в веб-журналы server2. – Ritwik

ответ

1

CORS нуждается получатель вызова разрешить или запретить. В вашем сценарии вам нужен сервер2, чтобы разрешать подключения сервера1.

<filter> 
    <filter-name>CorsFilter</filter-name> 
    <filter-class>org.apache.catalina.filters.CorsFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>CorsFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

Убедитесь, что ваш белый список содержит правильный URL, например https://server1:8081/, потому что все протокола, хоста и порт должны совпадать!

http://enable-cors.org/server_tomcat.html

+0

ya, это отличный ресурс, который поможет CORS. – kuldipem

+0

@Marged, спасибо за ответ. У меня есть вопрос. Я даже не вижу, что запрос достигает server2. И на сервере1 я вижу HTTP 304. Будет ли CORS на сервере2 гарантировать, что запросы достигнут server2 и server2, смогут его обслуживать? – Ritwik

+0

@ Ritwik да, будет. Я видел браузеры, которые скрывают запрос предварительной проверки CORS и могут не отображаться в файлах журнала server2. Самый безопасный способ увидеть их - либо использовать сетевые трассировки браузера или Wireshark. – Marged

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