1
我有一个Angular应用程序在端口上运行。而我的Rest服务器正在端口上运行。为所有请求添加额外的头文件(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.
当我删除javascript文件中的行时,请求成功完成。
我想,错误是在预检请求(OPTIONS)上,是不是? 您是否需要将'x-rest-version'添加到'cors.allowed.headers'? – Ruben
哇,太棒了!这很有趣,因为我已经根据tomcat.apache.org/tomcat-7.0-doc/config/filter.html玩过这个参数,但从来没有理解我必须将'x-rest-version'放在'param-value'节点中。现在正在工作。 – David
高兴地帮忙,我会发布一个回应,让这个问题回答一些关于错误的更多细节。 – Ruben