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>

Ответ 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