我一直在尝试在我的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;因此不允许访问。
有关如何快速实现这一目标的任何建议?我一直在网上查看大量资源,不幸的是我无法让它工作。期待您的建议。
答案 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.org,https://www.apache.org。默认值:*(任何来源是 允许访问资源)
来源:https://tomcat.apache.org/tomcat-7.0-doc/config/filter.html