我在启用 Cors 的 jBoss 服务器中使用 resteasy-jaxrs 时发现了一些奇怪的东西。这是设置:

我们的服务器启用了 thetransactioncompany.com 的 CorsFilter (v1.3.2) 作为 servlet 过滤器以启用 CORS 并将适当的 CORS header 添加到 HttpServletResponse 对象。

服务器本身正在使用 resteasy-jaxrs (v2.3.2.Final) 来提供 JSON 端点来为我们的应用程序提供支持,显然在单独的域上运行。

问题是,如果我的端点方法之一生成任何类型的异常(NPE、UnauthorizedException、InternalServerErrorException),作为准备响应的一部分,RestEasy 会调用

(HttpServletResponse)response.reset()  

这会清除我的 CORS header 。这会导致 Chrome 正确地采取行动,就好像应该取消请求一样。这对于需要这些错误代码的前端开发人员来说真的很不方便。

两个问题:

  1. 为什么 RestEasy 要清除这些 header ?
  2. 有没有其他人遇到过这个问题并有任何解决方法?

请您参考如下方法:

看到您遇到这种行为,我真的很惊讶,因为我从未见过这种情况,而且我这一天当然遇到过很多异常。

无论如何,请考虑按照 here 所述编写自定义 ExceptionMapper .您可以使用 CORS header 填充响应并将其与相应的错误信息一起从 toResponse 返回。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

java之如何通过付款找到利率