2016-09-27 13 views
1

私は角度アプリをポートで実行しています。そして私の残りのサーバは、ポートで実行されています。すべてのリクエストに余分なヘッダーを追加する(Angular to Tomcat)

残りのサーバーに対するすべての要求に余分のヘッダーを追加します。

だから、ここ休息サーバのweb.xml設定ファイルです:

<filter> 

    <filter-name>CorsFilter</filter-name> 
    <filter-class>org.apache.catalina.filters.CorsFilter</filter-class> 

    <!-- With or without this, it doesn't work --> 
    <init-param> 
     <param-name>cors.allowed.headers</param-name> 
     <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value> 
    </init-param> 

    <init-param> 
     <param-name>cors.allowed.origins</param-name> 
     <param-value>http://localhost:3000</param-value> 
    </init-param> 

    <init-param> 
     <param-name>cors.allowed.methods</param-name> 
     <param-value>GET,POST,HEAD,OPTIONS,PUT,DELETE</param-value> 
    </init-param> 

    <init-param> 
     <param-name>cors.exposed.headers</param-name> 
     <param-value>Location</param-value> 
    </init-param> 

</filter> 

私はinterceptor.jsでこれを追加すると:

config.headers["x-rest-version"] = "2.0.0"; // version dynamically generated 

サーバは403を返します。

# Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. The response had HTTP status code 403. 

enter image description here

enter image description here

javascriptファイルの行を削除すると、要求は正常に実行されます。

enter image description here

+2

エラーはプリフライトリクエスト(OPTIONS)にあると思いますか? 'x-rest-version'を' cors.allowed.headers'に追加する必要がありますか? – Ruben

+0

うわー、素晴らしい!これは面白いことですが、私はすでにtomcat.apache.org/tomcat-7.0-doc/config/filter.htmlに従ってこのパラメータを使いましたが、 'param-value'ノードに' x-rest-version'を置かなければならないということは決して理解できませんでした。それは今働いている。 – David

+0

喜んで助けてください、私は、この質問にエラーの詳細をもう少し詳しく答えさせるための回答を投稿します。 – Ruben

答えて

1

HTTPサーバは、HTTPヘッダをチェックするために使用すると、あなたは、ヘッダーx-rest-versionに合格しようとしていると、あなたの設定にホワイトリストされているではありません。

x-rest-versioncors.allowed.headersに追加します。

... 
<init-param> 
    <param-name>cors.allowed.headers</param-name> 
    <param-value>x-rest-version,Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value> 
</init-param> 
... 
関連する問題