首頁 > Java > java教程 > 如何使用 Jersey 在 JAX-RS 中實現 CORS 處理?

如何使用 Jersey 在 JAX-RS 中實現 CORS 處理?

Linda Hamilton
發布: 2024-12-23 20:25:13
原創
919 人瀏覽過

How to Implement CORS Handling in JAX-RS with Jersey?

JAX-RS 與Jersey 中的CORS 處理

簡介

跨域資源共享(CORS) 支援Web 應用程式與託管在不同網域上的資源之間的安全通訊。在 RESTful API 中,處理 CORS 至關重要,以允許跨域請求。 JAX-RS 提供了一種使用自訂過濾器處理 CORS 的便捷機制。

Jersey 2.x 的過濾器實作

在 Jersey 2.x 中,可以使用 ContainerResponseFilter將 CORS 標頭加入到回應中。以下過濾器新增了必要的標頭:

import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.core.MultivaluedMap;

@Provider
public class CORSFilter implements ContainerResponseFilter {

    @Override
    public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) {
        MultivaluedMap<String, String> headers = responseContext.getHeaders();

        headers.add("Access-Control-Allow-Origin", "*");
        headers.add("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With");
        headers.add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
    }
}
登入後複製

註冊過濾器

CORS 過濾器可以在ResourceConfig 中註冊,如下所示:

final ResourceConfig resourceConfig = new ResourceConfig();
resourceConfig.register(CORSFilter.class);
登入後複製

Jersey的過濾器實作1.x

對於Jersey 1.x,也可以使用ContainerResponseFilter:

import com.sun.jersey.spi.container.ContainerResponseFilter;
import com.sun.jersey.spi.container.ContainerResponse;
import com.sun.jersey.spi.container.ContainerRequestContext;

@Provider
public class CORSFilter implements ContainerResponseFilter {

    @Override
    public ContainerResponse filter(ContainerRequestContext requestContext, ContainerResponse response) {

        response.getHttpHeaders().add("Access-Control-Allow-Origin", "*");
        response.getHttpHeaders().add("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With");
        response.getHttpHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");

        return response;
    }
}
登入後複製

Jersey 1.x 的Web.xml 配置

Jersey 1.x 的Web.xml 配置>

在web.xml中,配置過濾器如下:
<init-param>
  <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
  <param-value>com.yourpackage.CORSFilter</param-value>
</init-param>
登入後複製

以上是如何使用 Jersey 在 JAX-RS 中實現 CORS 處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板