Java バックエンド関数開発でクロスドメインリクエストを処理するにはどうすればよいですか?

WBOY
リリース: 2023-08-05 09:40:45
オリジナル
965 人が閲覧しました

Java バックエンド関数開発でクロスドメイン要求を処理するにはどうすればよいですか?

フロントエンドとバックエンドが分離されている開発モードでは、フロントエンドがバックエンド API インターフェイスにリクエストを送信し、JavaScript を通じてデータを取得するのが非常に一般的なシナリオです。ただし、ブラウザーの同一オリジン ポリシーにより、クロスドメイン リクエストには制限があります。クロスドメイン リクエストとは、フロントエンド ページが、AJAX などの方法を介して、異なるドメイン名、異なるポート、または異なるプロトコルを持つサーバーを要求することを意味します。この記事では、Java バックエンド関数の開発においてクロスドメイン リクエストを処理する一般的な方法をコード例とともに紹介します。

クロスドメインの問題を解決する一般的な方法は、バックエンドで対応する構成を作成することです。以下では、例として Spring Boot フレームワークを使用して、クロスドメイン リクエストを処理する方法を紹介します。

  1. CrossOrigin アノテーションの追加

バックエンド コントローラー メソッドに CrossOrigin アノテーションを追加します。このアノテーションは、ドメイン名、リクエスト メソッド、およびクロスオリジンを許可するその他の関連パラメーターを構成するために使用されます。ドメイン。以下に例を示します。

@RestController
@RequestMapping("/api")
@CrossOrigin(origins = "http://frontend.com", methods = {RequestMethod.GET, RequestMethod.POST})
public class MyController {
    // Controller方法...
}
ログイン後にコピー

上記のコードでは、@CrossOrigin アノテーションは、http://frontend.com のドメイン名が GET リクエストと POST リクエストを開始できることを指定しています。必要に応じてこれらのパラメータを変更できます。

  1. Spring Boot グローバル クロスドメイン構成の構成

構成ファイルを通じて、グローバル クロスドメイン要求処理を実現できます。 Spring Boot プロジェクト構成ファイル (application.properties など) に次の構成を追加します。

spring.webmvc.cors.allowed-origins=*
ログイン後にコピー

上記のコードは、すべてのドメイン名がクロスドメイン要求を開始できることを示しています。次のような特定のドメイン名を指定することもできます。

spring.webmvc.cors.allowed-origins=http://frontend1.com,http://frontend2.com
ログイン後にコピー
  1. フィルターを使用してクロスドメイン リクエストを処理する

上記の 2 つの方法に加えて、次のこともできます。フィルターを使用してクロスドメイン要求を処理します。 Filter インターフェイスを実装するクラスを作成し、doFilter メソッドにクロスドメイン処理ロジックを追加します。以下に例を示します。

@Component
public class CorsFilter implements Filter {
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With");

        chain.doFilter(req, res);
    }
}
ログイン後にコピー

上記のコードでは、クロスドメイン要求を許可する構成は、応答ヘッダーを設定することによって実装されています。

要約すると、Java バックエンド関数開発ではクロスドメイン リクエストを処理する方法がたくさんあります。実際のニーズに応じて適切な方法を選択してください。上記は、CrossOrigin アノテーションの使用、Spring Boot グローバル クロスドメイン構成の構成、および Filter を使用してクロスドメイン リクエストを処理するためのサンプル コードを示しています。開発中のクロスドメインの問題の解決に役立つことを願っています。

以上がJava バックエンド関数開発でクロスドメインリクエストを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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