启用CORS Apache Tomcat 7.0.52

时间:2015-05-11 15:26:45

标签: java apache tomcat cors activation

我一直在尝试在我的Microsoft Azure Apache Tomcat服务器上启用CORS,我已经尝试了很多技术,但我仍然无法启动并运行CORS。我已将此添加到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>

我一直收到错误:

  

XMLHttpRequest无法加载url&amp; output = json。没有   &#39;访问控制允许来源&#39;标题出现在请求的上   资源。起源&#39; http://url.net&#39;因此不允许访问。

有关如何快速实现这一目标的任何建议?我一直在网上查看大量资源,不幸的是我无法让它工作。期待您的建议。

1 个答案:

答案 0 :(得分:1)

你的web.xml看起来没问题,所以我希望它确实按照要求设置了响应标头(你的问题无论如何都不清楚)。

但是在某些现代浏览器(Chrome,Firefox等)上,您会发现它们不允许使用通配符来源:

<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
    <param-name>cors.allowed.origins</param-name>
    <param-value>*</param-value>
</init-param>

相反,您需要指定一个预期的域名,以获得更高的安全性:

<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
    <param-name>cors.allowed.origins</param-name>
    <param-value>http://otherdomain.com</param-value>
</init-param>

有用的是,原始列表可以用逗号分隔:

  

可以指定A *以允许从任何来源访问资源。   否则,可以提供逗号分隔的起源白名单。例如:   http://www.w3.orghttps://www.apache.org。默认值:*(任何来源是   允许访问资源)

来源:https://tomcat.apache.org/tomcat-7.0-doc/config/filter.html