Tomcat REST API 上的 CORS 访问

Posted

技术标签:

【中文标题】Tomcat REST API 上的 CORS 访问【英文标题】:CORS Access on Tomcat REST API 【发布时间】:2017-02-26 12:37:01 【问题描述】:

我有一个在端口 8081 上运行的本地 Tomcat 安装,它公开了一个 REST API。我的开发 Web 服务器在端口 9000 上运行。现在我想使用 Angular 的 $http 从浏览器中运行的 javascript 代码调用 REST。这显然是一个 CORS 调用,我遇到了错误:

“请求中没有“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://localhost:9000” 访问。”

我按照文档的建议在 Tomcat 配置中添加了一个过滤器:

<filter>
    <filter-name>CorsFilter</filter-name>
    <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>CorsFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

这对我的GET 请求非常有效,但现在我想执行POST 请求并且错误又回来了。为什么这样?该过滤器不应该也允许POST 吗?

【问题讨论】:

【参考方案1】:

你需要添加一些init params:

<init-param>
  <param-name>cors.allowed.methods</param-name>
  <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
</init-param>
<param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers, Last-Modified</param-value>

【讨论】:

抱歉,它仍然无法正常工作。我使用了您提供的文档链接中的高级配置示例。这应该包含所有必要的东西,但什么都没有......

以上是关于Tomcat REST API 上的 CORS 访问的主要内容,如果未能解决你的问题,请参考以下文章

2 个端口上的节点 rest api 和 angularJS 应用程序的 CORS 问题

CORS - 从角度调用Tomcat上的休息服务

我的请求是跨源请求吗?(heroku 上的 Django rest api,CORS 没有阻止我的请求)

从 localhost 到 rest api 的身份验证结果 CORS 错误

部署在 Tomcat 上的 Spring Boot Rest API 提供 404 但独立工作一切正常

远程服务器上的 YII 2 REST CORS 问题