gpt4 book ai didi

java - Tomcat 8 忽略 CORS 过滤器(web.xml、代码内等)

转载 作者:行者123 更新时间:2023-11-28 23:25:56 28 4
gpt4 key购买 nike

由于某些奇怪的原因,Tomcat 8(在 w2k12 服务器上)忽略了我在 tomcat8/conf/web.xml 上的 CORS 过滤器设置,根据 Apache Tomcat 8 文档,这些设置如下:

<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>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

它确实适用于 GET 请求,但是当我尝试执行 POST 时,我收到 403 Forbidden 错误:

Origin http://webapp.mycompany.com is not allowed by Access-Control-Allow-Origin.

在哪里http://webapp.mycompany.com是我公司的托管服务提供商,具有您通过 cpanel 共享托管获得的标准功能,我的前端在那里,它将请求发送到我安装了 Tomcat 8 服务器和基于 Jersey 的 REST 的 webapp WAR 的另一个域应用程序接口(interface)。

现在,根据 Apache 官方文档中的默认设置,我使用的配置是它工作所需的最低配置。

然后我尝试将过滤器移动到应用程序的 web.xml 中,但运气不好,尝试添加更多配置,例如允许的方法,尝试直接在响应中添加 header ,如下所示:

Response.status(Response.Status.OK)
.entity(relaciona)
.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, HEAD")
.header("Access-Control-Allow-Headers", "X-PINGOTHER, Origin, X-Requested-With, Content-Type, Accept")
.header("Access-Control-Max-Age", "1728000")
.build();

没用。

如有任何帮助,我们将不胜感激,为了确认,请尝试以下操作:

  • 尝试分别在服务器和 webapp web.xml 文件中设置配置,但没有成功
  • 尝试将 header 添加到 Jersey REST Api 中的每个响应,但没有成功
  • 对 API 的请求是通过带有 bootstrap 和 jQuery 的 HTML5 前端完成的,尝试将 crossDomain:true 添加到 ajax 请求中,没有区别。
  • 将源域添加到 web 和服务器 web.xml 文件中的 xml(单独测试),但均无效

谢谢!

最佳答案

一旦您使用跨域查询 POST,您需要为 @POST/@PUT/@DELETE 查询定义 @OPTION。

您是否定义了@Option 类以定义您的@Post?

这是一个关于如何这样做的例子:

@OPTIONS
@Compress
@Path("/mypost")
@Consumes({ MediaType.MULTIPART_FORM_DATA })
@Produces({ MediaType.APPLICATION_JSON })
public Response mypost_opts() {
return Response.ok().build();
}



@POST
@Compress
@Path("/mypost")
@Consumes({ MediaType.MULTIPART_FORM_DATA })
@Produces({ MediaType.APPLICATION_JSON })
public Response mypost() {
return Response.ok().build();
}

关于java - Tomcat 8 忽略 CORS 过滤器(web.xml、代码内等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37061577/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com