2013-07-26 19 views

回答

10

THRE的反應是直接訪問ContainerResponseContext

@Provider 
public class ResponseCorsFilter implements ContainerResponseFilter{ 

    @Override 
    public void filter(ContainerRequestContext requestContext, 
      ContainerResponseContext responseContext) throws IOException { 
      responseContext.getHeaders() 
       .putSingle("Access-Control-Allow-Origin","*"); 
      responseContext.getHeaders() 
       .putSingle("Access-Control-Allow-Methods", 
        "GET, POST, PUT, DELETE"); 
      List<String> reqHead=requestContext.getHeaders() 
        .get("Access-Control-Request-Headers"); 
      if(null != reqHead){ 
       responseContext.getHeaders() 
        .put("Access-Control-Allow-Headers", 
         new ArrayList<Object>(reqHead)); 
      } 
    } 

} 
+1

但是使用這個我怎樣才能得到我的迴應的身體嗎? – HybrisFreelance

+0

有'ContainerResponseContext.setEntity'方法允許替換整個實體。 –

+0

謝謝... 我可以做'ContainerRequestContext'上的相反操作嗎? 我的意思是我想從過濾器中的'ContainerRequestContext'獲取POJO。我們可以從'ContainerRequestContext'獲得'EntityStream',但是我需要'Entity',因爲我們在'ContainerResponseContext''中獲取 – HybrisFreelance