2012-09-12 26 views
23

に私はTomcatコンテナのデフォルトのHTTPヘッダを設定したい -アクセス制御 - 許可 - 起源:* Tomcatの

アクセス制御 - 許可 - 起源:*

様々からstackoverslowとGoogleからの異なるリンクは、ほとんどresourceを指しています。 Thisも同じようにそれを行う方法について述べています。私は同じものを複製しましたが、ヘッダーは表示されません。 これは私がやっていることです: 1)Tomcatの 2の/ libフォルダ内cors.jarファイルをコピーした)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です。助けてください。

答えて

11

問題は、プロジェクトの一部としてjarファイルを含めないで生じたcors.allowed.headersに続い含めることによって許可/受け入れているブラウザ/ホストによって追加されていることを確認してください。私はtomcat libにそれを含めていました。プロジェクトの依存関係で

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

、以下:今web.xml作品に下記の使用

<dependency> 
    <groupId>com.thetransactioncompany</groupId> 
    <artifactId>cors-filter</artifactId> 
    <version>1.3.2</version> 
</dependency> 
+2

web.xmlに

1.writeカスタムフィルタ

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。どのファイルにプロジェクトの依存関係を入れますか? – Josh

+0

私のプロジェクトはcors-filter依存関係なく動作し、突然動作を停止しました。それを追加した後、再び動作します。 – Kenci

+0

私のプロジェクトはmavenビルドではありませんでしたので、プロジェクトの依存関係を追加する必要がありますか? jarsとweb.xmlファイルを更新しましたが、うまくいきませんでした。 – Giri

2

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

問題が引き続き発生する場合は、web.xmlを貼り付けてください。

10

変更この:この

<init-param> 
    <param-name>cors.supportedHeaders</param-name> 
    <param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value> 
</init-param> 

<init-param> 
    <param-name>cors.supportedHeaders</param-name> 
    <param-value>Content-Type, Last-Modified</param-value> 
</init-param> 

は私が動作するように何かを得るためにこれをしなければなりませんでした。これを書いている時点で

1

をフィルタリングこれは問題を解決した私のウェブアプリケーションで私が言及していた "クロスホスト"でした。また

すべてCORSヘッダーが

1

ことは、これを試してみてください。私も問題を抱えてい

<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> 
関連する問題