Home >Java >javaTutorial >How to Implement CORS in JAX-RS Applications Using Jersey?
Dealing with CORS Using JAX-RS with Jersey
Introduction
Cross-Origin Resource Sharing (CORS) is a mechanism that enables cross-origin HTTP requests. It allows web applications to make requests to remote servers, even if the origins of the two servers are different. When implementing CORS, it is crucial to consider both simple and preflight requests.
Solution
To handle CORS in JAX-RS with Jersey, a ContainerResponseFilter can be employed. The following sections provide implementations for both Jersey 1.x and 2.x.
For Jersey 2.x:
import javax.ws.rs.container.ContainerResponseFilter; import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.container.ContainerResponseContext; import javax.ws.rs.core.Response; import java.io.IOException; @Provider public class CORSFilter implements ContainerResponseFilter { @Override public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException { responseContext.getHeaders().add("Access-Control-Allow-Origin", "*"); responseContext.getHeaders().add("Access-Control-Allow-Headers", "CSRF-Token, X-Requested-By, Authorization, Content-Type"); responseContext.getHeaders().add("Access-Control-Allow-Credentials", "true"); responseContext.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD"); } }
For Jersey 1.x:
import com.sun.jersey.spi.container.ContainerResponseFilter; import com.sun.jersey.spi.container.ContainerResponse; import com.sun.jersey.spi.container.ContainerRequest; @Provider public class CORSFilter implements ContainerResponseFilter { @Override public ContainerResponse filter(ContainerRequest requestContext, ContainerResponse responseContext) { responseContext.getHttpHeaders().add("Access-Control-Allow-Origin", "*"); responseContext.getHttpHeaders().add("Access-Control-Allow-Headers", "CSRF-Token, X-Requested-By, Authorization, Content-Type"); responseContext.getHttpHeaders().add("Access-Control-Allow-Credentials", "true"); responseContext.getHttpHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD"); return responseContext; } }
By implementing either of these filters, you can enable CORS support in your JAX-RS web application built using Jersey.
The above is the detailed content of How to Implement CORS in JAX-RS Applications Using Jersey?. For more information, please follow other related articles on the PHP Chinese website!