我正在关注此article以使我们的泽西岛对CORS投诉。到目前为止,我已实施ContainerResponseFilter
以向响应添加Access-Control-Allow-Origin
标头。这是我的片段:
ResponseBuilder resp = Response.fromResponse(contResp.getResponse());
resp.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
String reqHead = req.getHeaderValue("Access-Control-Request-Headers");
if(null != reqHead && !reqHead.equals("")){
resp.header("Access-Control-Allow-Headers", reqHead);
}
contResp.setResponse(resp.build());
这是我的web.xml内容:
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
<param-value>com.test.ResponseCorsFilter</param-value>
</init-param>
当我跑步时,我收到此错误:
com.sun.jersey.spi.inject.Errors$ErrorMessagesException
com.sun.jersey.spi.inject.Errors.processErrorMessages(Errors.java:170)
com.sun.jersey.spi.inject.Errors.postProcess(Errors.java:136)
但是,如果我使用这些配置运行相同的应用程序:
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.test.client</param-value>
</init-param>
我没有收到任何错误。所以只有当我尝试使用ContainerResponseFilter时才会出现此错误。有人可以帮我解决这个问题吗?