2013-04-15 28 views
2

我想在我的应用程序中为所有Jersey请求添加Access-Control-Allow-Origin标头。是否有可能通过Jersey servlet来实现这一点,所以它的应用范围很广?如何向所有Jersey请求添加标题

ServletRegistration jerseyServletRegistration = ctx.addServlet("JerseyServlet", new ServletContainer()); 
    jerseyServletRegistration.setInitParameter("com.sun.jersey.config.property.packages", "com.production.resource"); 
    jerseyServletRegistration.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true"); 
    jerseyServletRegistration.setLoadOnStartup(1); 
    jerseyServletRegistration.addMapping("/api/*"); 

回答

0
import java.util.ArrayList; 
import java.util.List; 
import java.util.Map; 

import com.sun.jersey.api.client.Client; 
import com.sun.jersey.api.client.ClientRequest; 
import com.sun.jersey.api.client.ClientResponse; 
import com.sun.jersey.api.client.filter.ClientFilter; 

public final class JerseySample { 

    public static void main(final String[] args) { 
    final Client client = Client.create(); 

    client.addFilter(new ClientFilter() { 

     @Override 
     public ClientResponse handle(final ClientRequest request) { 
     final Map<String, List<Object>> headers = request.getHeaders(); 

     final List<Object> valueList = new ArrayList<Object>(); 

     valueList.add("Sample Value"); 

     headers.put("Sample-Header", valueList); 

     return getNext().handle(request); 
     } 

    }); 

    ... 
    } 

} 

http://jersey.java.net/nonav/apidocs/latest/jersey/com/sun/jersey/api/client/filter/ClientFilter.html