html - 使用 ajax 和带有 cors.preflight.header 过滤器的 Tomcat 的 RESTful 服务中的 http preflight 标头出现问题
问题描述
我正在尝试了解 Tomcat 的 CORS 过滤器,但我对 cors.exposed.header 有疑问。
如何使用 Ajax 向我的 Restful Web 服务添加预检标头?例如,我尝试了 X-PINGOTHER Header。
$.ajax({
url : domain + "/rest/businessCards" ,
type: 'POST',
beforeSend: function(xhr) {xhr.setRequestHeader('content-type','application/json');},
beforeSend: function(xhr) {xhr.setRequestHeader('X-PINGOTHER', 'pingpong');},
dataType: "json",
data : test,
contentType: 'application/json',
[...]
});
这没有用。
我总是从浏览器获得 OPTION 预检请求的状态代码 403。
我应该在我的 web.xml 文件中添加什么?
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.exposed.headers</param-name>
<param-value>Access-Control-Allow-Headers</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
我的配置对吗?
我的示例引用了此页面:https ://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Preflighted_requests
解决方案
据我所知,您遇到了 CORS 问题。我不知道您是否可以在服务器中执行此操作,但我会尝试添加Access-Control-Allow-Origin
HTTP 标头,带有 value *
。您可以在此处找到有关如何在 Apache 中实现此目的的更多信息:
https ://enable-cors.org/server_apache.html