首页 > 解决方案 > 使用 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

标签: htmlajaxtomcatcorspreflight

解决方案


据我所知,您遇到了 CORS 问题。我不知道您是否可以在服务器中执行此操作,但我会尝试添加Access-Control-Allow-OriginHTTP 标头,带有 value *。您可以在此处找到有关如何在 Apache 中实现此目的的更多信息: https ://enable-cors.org/server_apache.html


推荐阅读