33

Tomcatコンテナにデフォルトのhttpヘッダーを設定したい-

Access-Control-Allow-Origin:*

stackoverslowとgoogleのさまざまなリンクから、ほとんどがリソースを指しています。これもまた、それを行う方法について同じことを言います。同じものを複製しましたが、それでもヘッダーは表示されません。これは私が行ったことです:1)tomcatの/ libフォルダーにcors.jarファイルをコピーしました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です。助けてください。

4

7 に答える 7

18

これを書いている時点で、Tomcat 7の現在のバージョン(7.0.41)にはCORSフィルターが組み込まれていますhttp://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#CORS_Filter

于 2013-07-03T20:35:34.153 に答える
16

jarこの問題は、プロジェクトの一部としてファイルが含まれていないために発生しました。私はそれをtomcatlibに含めていました。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>
于 2014-03-04T06:36:34.590 に答える
10

これを変える:

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

私は何かを機能させるためにこれをしなければなりませんでした。

于 2013-02-12T15:56:57.040 に答える
6

これを試して。

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.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>
于 2017-07-04T02:49:51.810 に答える
1

web.xmlをもう一度確認してください。あなたはいくつかのばかげた間違いをしているかもしれません。私のアプリケーションは同じinit-param設定で正常に動作しているので...

それでも問題が解決しない場合は、web.xmlをコピーして貼り付けてください。

于 2012-11-01T17:39:05.277 に答える
1

Webアプリで参照していた「クロスホスト」であるIPアドレス(ラップトップワイヤレスDHCP)を変更した後、ブラウザーを再起動する必要がありました。これにより、問題が解決しました。

また、ブラウザ/ホストによって追加されているすべてのcorsヘッダーが、cors.allowed.headersに含めることで受け入れ/許可されていることを確認してください。

于 2014-03-03T21:41:30.170 に答える
1

cors.support.credentialstrueに設定し、 cors.allowed.originsを*として設定していましたが、これは機能しません。

cors.allowed.originsが*の場合、cors.support.credentialsはfalseである必要があります(デフォルト値であるか、明示的に設定しないでください)。

https://tomcat.apache.org/tomcat-7.0-doc/config/filter.html

于 2021-02-08T08:08:30.693 に答える