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 问题
我的请求是跨源请求吗?(heroku 上的 Django rest api,CORS 没有阻止我的请求)
从 localhost 到 rest api 的身份验证结果 CORS 错误