在Jersey中启用跨域 - 面临运行时异常

时间:2014-10-28 10:44:18

标签: java rest jersey

我正在关注此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时才会出现此错误。有人可以帮我解决这个问题吗?

0 个答案:

没有答案