Access-Control-Allow-Origin: * в tomcat
Я хочу установить HTTP-заголовок по умолчанию в моем контейнере tomcat -
Access-Control-Allow-Origin: *
Из разных ссылок на stackoverslow и из google большинство указало на ресурс. Это снова говорит о том, как это сделать. Я реплицировал то же самое, но все же заголовок не отображается. Это то, что я сделал: 1) Скопированный файл cors.jar в /lib папке tomcat 2) Вставить этот текст в web.xml
<filter>
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
<init-param>
<param-name>cors.allowOrigin</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.supportedMethods</param-name>
<param-value>GET, POST, HEAD, PUT, DELETE</param-value>
</init-param>
<init-param>
<param-name>cors.supportedHeaders</param-name>
<param-value>Content-Type, Last-Modified</param-value>
</init-param>
<init-param>
<param-name>cors.exposedHeaders</param-name>
<param-value>Set-Cookie</param-value>
</init-param>
<init-param>
<param-name>cors.supportsCredentials</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Это не работает, и я беспомощен. Моя версия tomcat - -6.0.6. Пожалуйста помоги.
Ответы
Ответ 1
Проблема возникла из-за того, что в проект не jar
файл jar
. Я просто включил его в tomcat lib. Использование ниже в web.xml
теперь работает:
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>
org.springframework.web.filter.DelegatingFilterProxy
</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
<init-param>
<param-name>cors.allowOrigin</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.supportsCredentials</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>cors.supportedHeaders</param-name>
<param-value>accept, authorization, origin</param-value>
</init-param>
<init-param>
<param-name>cors.supportedMethods</param-name>
<param-value>GET, POST, HEAD, OPTIONS</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
И ниже в зависимости от вашего проекта:
<dependency>
<groupId>com.thetransactioncompany</groupId>
<artifactId>cors-filter</artifactId>
<version>1.3.2</version>
</dependency>
Ответ 2
На момент написания этой статьи текущая версия Tomcat 7 (7.0.41) имеет встроенный фильтр CORS http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#CORS_Filter
Ответ 3
Измените это:
<init-param>
<param-name>cors.supportedHeaders</param-name>
<param-value>Content-Type, Last-Modified</param-value>
</init-param>
К этому
<init-param>
<param-name>cors.supportedHeaders</param-name>
<param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>
</init-param>
Я должен был сделать это, чтобы заставить работать.
Ответ 4
Обновите свой web.xml снова. Вы можете совершить какую-то глупую ошибку. Поскольку мое приложение отлично работает с той же конфигурацией init-param...
Скопируйте вставьте файл web.xml, если проблема по-прежнему сохраняется.
Ответ 5
Попробуй это.
1.Написать пользовательский фильтр
package com.dtd.util;
import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class CORSFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
httpResponse.addHeader("Access-Control-Allow-Origin", "*");
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
}
}
2.add to web.xml
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>com.dtd.util.CORSFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Ответ 6
Мне пришлось перезапустить браузер после изменения IP-адреса (беспроводной беспроводной DHCP-портативный компьютер), который был моим "кросс-хостом", о котором я упоминал в своем веб-приложении, которое разрешило проблему.
Также убедитесь, что все заголовки корков, добавляемые вашим браузером/хостом, принимаются/разрешены, включая затем в cors.allowed.headers