「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Jersey を使用して JAX-RS の CORS 問題を解決するにはどうすればよいですか?

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

2024 年 12 月 21 日に公開
ブラウズ:453

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

ジャージ 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 実装を参照してください。 例。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3