我在启用 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 正确地采取行动,就好像应该取消请求一样。这对于需要这些错误代码的前端开发人员来说真的很不方便。
两个问题:
- 为什么 RestEasy 要清除这些 header ?
- 有没有其他人遇到过这个问题并有任何解决方法?
请您参考如下方法:
看到您遇到这种行为,我真的很惊讶,因为我从未见过这种情况,而且我这一天当然遇到过很多异常。
无论如何,请考虑按照 here 所述编写自定义 ExceptionMapper
.您可以使用 CORS header 填充响应并将其与相应的错误信息一起从 toResponse
返回。