【发布时间】:2014-05-25 15:23:47
【问题描述】:
我的 JBOSS 7.1.1 服务器上的 REST API 服务出现问题。
现在我使用 RESTEasy 实现,并且我有以下过滤器将 CORS 标头添加到响应中:
@WebFilter(filterName = "HeaderFilter", urlPatterns = {"/*"})
public class HeaderFilter implements Filter {
public void init(FilterConfig arg0) throws ServletException{}
public void destroy(){}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException
{
//Just continue the request
filterChain.doFilter(request, response);
//After the request add the response headers
HttpServletResponse responseObj = (HttpServletResponse)response;
responseObj.addHeader("Access-Control-Allow-Origin", "*");
responseObj.addHeader("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS");
responseObj.addHeader("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Content-Length");
}
}
我的问题是服务器有时会选择部分发送响应。
通过传输编码:分块“协议”。
这无关紧要,我对此没有任何问题,但它不再添加 CORS 标头。应用程序的客户端现在无法使用数据,我无法弄清楚如何将 CORS 标头添加到最终响应中。
你们知道我该如何解决这个问题吗?
编辑:顺便说一句,我正在使用 Jackson 将我的延迟加载模型转换为 JSON,所以我认为这不像设置 Content-Length 那样简单。
【问题讨论】:
-
你确定第一个块没有CORS头吗?
-
我不是,第一个块可能会有这些标题,因为过滤器确实运行了,我已经用 SYSOUT 消息对此进行了测试。然而,问题是请求的结果没有正确的标头,例如它们不会出现在我的开发 http 客户端中,也不会出现在使用数据的 JS 应用程序中。 @AndreiI
-
@Jcocqvan,您找到解决方案了吗?我现在面临类似的问题。
标签: java jakarta-ee jboss jax-rs resteasy