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

Jersey を使用して JAX-RS の CORS 問題を解決するにはどうすればよいですか?

DDD
リリース: 2024-12-19 15:34:14
オリジナル
828 人が閲覧しました

How to Solve CORS Issues in JAX-RS with Jersey?

Jersey を使用した JAX-RS での CORS の処理

問題: リクエストの処理中に CORS の問題が発生しましたJAX-RS と Jersey を使用します。具体的には、サーバーが必要な CORS ヘッダーを設定していないため、「要求されたリソースに 'Access-Control-Allow-Origin' ヘッダーが存在しません。」というエラーが発生します。

解決策: Jersey を使用して JAX-RS の CORS を処理するには、ContainerResponseFilter を実装する必要があります。実装の違いは、Jersey 1.x と 2.x のどちらを使用しているかによって異なります。

Jersey 2.x:

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

@Provider
public class CORSFilter implements ContainerResponseFilter {

    @Override
    public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) {
        MultivaluedMap<String, Object> headers = responseContext.getHeaders();
        headers.add("Access-Control-Allow-Origin", "*");
        headers.add("Access-Control-Allow-Headers", "CSRF-Token, X-Requested-By, Authorization, Content-Type");
        headers.add("Access-Control-Allow-Credentials", "true");
        headers.add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
    }
}
ログイン後にコピー

Jersey 1.x:

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

@Provider
public class CORSFilter implements ContainerResponseFilter {

    @Override
    public ContainerResponse filter(ContainerResponse response) {
        response.getHttpHeaders().add("Access-Control-Allow-Origin", "*");
        response.getHttpHeaders().add("Access-Control-Allow-Headers", "CSRF-Token, X-Requested-By, Authorization, Content-Type");
        response.getHttpHeaders().add("Access-Control-Allow-Credentials", "true");
        response.getHttpHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");

        return response;
    }
}
ログイン後にコピー

追加注:

  • CORS フィルターが ResourceConfig オブジェクトに登録されていることを確認してください。
  • より適切に処理するには、単純な CORS リクエストとプリフライト CORS リクエストを区別する、より堅牢な実装の使用を検討してください。 .
  • より包括的な方法については、RESTeasy の CORSFilter 実装を参照してください。例。

以上がJersey を使用して JAX-RS の CORS 問題を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート