首页 >Java >java教程 >如何使用 Jersey 在 JAX-RS 应用程序中实施 CORS?

如何使用 Jersey 在 JAX-RS 应用程序中实施 CORS?

Susan Sarandon
Susan Sarandon原创
2024-12-16 07:53:11293浏览

How to Implement CORS in JAX-RS Applications Using Jersey?

使用 JAX-RS 和 Jersey 处理 CORS

简介

跨源资源共享 (CORS) 是一种支持跨源 HTTP 请求的机制。它允许 Web 应用程序向远程服务器发出请求,即使两个服务器的来源不同。实现 CORS 时,考虑简单请求和预检请求至关重要。

解决方案

要使用 Jersey 处理 JAX-RS 中的 CORS,可以使用 ContainerResponseFilter。以下部分提供 Jersey 1.x 和 2.x 的实现。

对于 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");
    }
}

对于 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;
    }
}

通过实现这些过滤器中的任何一个,您可以启用 CORS使用 Jersey 构建的 JAX-RS Web 应用程序中的支持。

以上是如何使用 Jersey 在 JAX-RS 应用程序中实施 CORS?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn