无法在apache tomcat中处理CORS请求

时间:2015-01-16 17:21:43

标签: ajax tomcat7 jax-rs cors

我正在使用apache tomcat V7.0。从客户端,我正在进行ajax调用,以访问在apache tomcat服务器中托管的REST服务,并使用JAX-RS构建。我只有一个休息GET方法。客户端与服务器不在同一个域中。假设我已经将html保存在桌面上,而不是运行html文件。这意味着我在没有域的情况下拥有这个html文件。我得到的响应来自服务器:[HTTP / 1.1 403 Forbidden 16ms]。这是一个CORS错误。为了摆脱这个错误,我做了以下事情: 客户端代码:

   xmlhttp = new XMLHttpRequest();
   xmlhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
   xmlhttp.setRequestHeader("Access-Control-Allow-Origin", "*");
   xmlhttp.setRequestHeader("Access-Control-Allow-Methods","GET, POST");
   //Normal ajax calls of setting url and opening requests follows

服务器端web.xml配置:

<filter>
  <filter-name>CorsFilter</filter-name>
  <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
  <param-name>cors.allowed.origins</param-name>
  <param-value>*</param-value>
</init-param>
<init-param>
  <param-name>cors.allowed.methods</param-name>
  <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
</init-param>
<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.exposed.headers</param-name>
  <param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
</init-param>
<init-param>
  <param-name>cors.support.credentials</param-name>
  <param-value>true</param-value>
</init-param>
<init-param>
  <param-name>cors.preflight.maxage</param-name>
  <param-value>10</param-value>
</init-param>
</filter>
<filter-mapping>
  <filter-name>CorsFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

即使在添加了所有的cors处理之后,无论是在服务器端还是客户端,我都会遇到cors错误。 我猜这个请求甚至没有到达过滤器并被拒绝。是否存在服务器中允许请求传递的一些配置。在apache中我在网上搜索并发现我们可以在.htaccess文件中这样做但是在apache tomcat的情况下该怎么办?

1 个答案:

答案 0 :(得分:0)

您是否尝试使用您的客户信息设置 cors.allowed.origins ?像这样:

  <init-param>
    <param-name>cors.allowed.origins</param-name>
    <param-value>http://10.3.50.139:8481</param-value>
  </init-param>