2015-01-29 4 views
6

Я пытаюсь реализовать базовый фильтр CORS в файле $ CATALINA_BASE/conf/web.xml. Вот мой фильтр:CORS Filter Tomcat 7 Не работает

<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> 

Я подтвердил, что я определенно под управлением поддерживаемой версии Tomcat:

Server version: Apache Tomcat/7.0.56 
Server built: Sep 26 2014 12:08:24 
Server number: 7.0.56.0 

Вот мой AJAX запрос:

function MethodOne() { 
$.ajax({ 
    type: "GET", 
    url: "http://localhost:8080/crossDomain", 
    crossDomain: true, 
    success: function(response) { 
     $('#result').html(response); 
    } 
}); 
} 

И мой запрос/ответные заголовки:

Remote Address:[::1]:8080 
Request URL:http://localhost:8080/crossDomain 
Request Method:GET 
Status Code:302 Found 
Request Headersview source 
Accept:*/* 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:en-US,en;q=0.8 
Connection:keep-alive 
Host:localhost:8080 
Origin:http://localhost:3000 
Referer:http://localhost:3000/ 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36 
Response Headersview source 
Date:Thu, 29 Jan 2015 15:19:00 GMT 
Location:http://localhost:8080/crossDomain/ 
Server:Apache-Coyote/1.1 
Transfer-Encoding:chunked 

Любая помощь будет оценена по достоинству. У меня такое чувство, что я не отправляю запрос надлежащим образом, но на самом деле понятия не имею.

+0

У меня такой же выпуск. –

+0

У меня очень похожая проблема, но моя ошибка с 403 в запросе опций OPTIONS. – moliveira

ответ

0

У меня была такая же проблема. Пришлось покончить с фильтром. Добавлено

request.getHeader("Origin"); 

в заголовке ответа. Это решило проблему для меня.

Другое решение - проверить, является ли это предполетным запросом. Затем пришлось добавить:

Request.ok().build(); 

Но я думаю, лучшим решением было отключить защиту веб-страниц в браузере.

Для Chrome я использовал:

--disable-web-security 
1

Если ваш web.xml имеет другие фильтры с диспетчерских особенностями как

<dispatcher>REQUEST</dispatcher> <dispatcher>INCLUDE</dispatcher> <dispatcher>FORWARD</dispatcher>

Затем CORS фильтр не загнуться для меня.

Однако последующее картирование фильтра сделало трюк.

<filter-mapping> <filter-name>CORS Filter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>FORWARD</dispatcher> </filter-mapping>

<dispatcher>FORWARD</dispatcher> был магия

Надеется, что это помогает вам друг!

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