ホームページ >Java >&#&チュートリアル >Jersey を使用して JAX-RS に CORS 処理を実装するにはどうすればよいですか?

Jersey を使用して JAX-RS に CORS 処理を実装するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-23 20:25:13903ブラウズ

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

Jersey を使用した JAX-RS での 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);

ジャージのフィルター実装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 設定

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。