CORS クロスドメイン リクエストを実装する Java の分析例

黄舟
リリース: 2017-09-23 09:44:22
オリジナル
1512 人が閲覧しました

この記事では、Java での CORS クロスドメイン リクエストの実装方法を主に紹介します。編集者がそれを参考にさせていただきます。エディターをフォローして一緒に見てみましょう

問題

フロントエンドとバックエンドの分離モードを使用してプロジェクトを開発する場合、ドメインを越えてサーバーデータを取得できないという問題によく遭遇します

これこれはブラウザの同じ起源によるものです。これはポリシーによって発生し、目的はセキュリティです。現在、フロントエンドとバックエンドの分離開発モデルが非常に普及しており、フロントエンドとバックエンドのプロジェクトが異なる環境で開発されることが多くなり、ドメインを越えてデータをリクエストする必要が生じます。ソリューションには主に次のものが含まれます:

JSONP、iframe、プロキシ モード、CORS など。
以前の方法についてはここでは説明しません。インターネットにはたくさんの情報があります。ここでは主に CORS ソリューションについて説明します。CORS は「クロスドメイン リソース共有」の略で、ブラウザーがクロスオリジン サーバーに XMLHttpRequest リクエストを発行できるようにすることで、AJAX は同じソースからのみ使用できるという制限を克服します。

CORS クロスドメインを使用するプロセスは、通常の Ajax プロセスと同じですが、サーバーがサポートを提供している限り、これがクロスドメインリクエストであることが判明したときにブラウザーがいくつかの処理を自動的に処理する点が異なります。 、フロントエンドは必要ありません。余分なことを行います。

実装

実装の一般的な考え方は次のとおりです。まず、フィルターを使用して、Origin フィールドなどのリクエスト オブジェクトの情報 (プロトコルを含むリクエストの送信元を示します) を取得します。 、ドメイン名、ポート)を使用して、事前に設定されたパラメータを通じてリクエストが正当であるかどうかを確認し、応答オブジェクトのヘッダー情報を設定して、クロスドメイン リソース リクエストを実装します。実装方法を紹介する前に、まず使用するレスポンスヘッダー情報について理解しましょう。

レスポンスヘッダー

Access-Control-Allow-Methods
は、ブラウザのCORSリクエストで許可されるHTTPメソッド(GET、POST、PUT、DELETE、OPTIONSなど)をリストするために使用されます

Access-Control-Allow- Credentials
クロスドメイン Cookie がサポートされているかどうかを示します

Access-Control-Allow-Headers
Content-Type やカスタム フィールドなど、サーバーによってサポートされているすべてのヘッダー情報フィールドを示すカンマ区切りの文字列

Access-Control-Expose - Headers
は「Access-Control-Allow-Headers」の反対で、サポートされていないヘッダー情報フィールドを示します

Access-Control-Allow-Origin
は、プロトコル、ドメイン名、ポートなどのクロスドメイン要求ソース情報を許可します。 *許可を示します すべてのリクエスト ソース、および 1 つのリクエスト ソースのみを設定できます

以下は、Java バックグラウンドでこのメソッドを実装する方法の概要です。

Code

最近spring-bootを使っているので、spring-bootをベースに実装していきます。

まず CorsFilter フィルターを作成します。コードは次のとおりです。これで、フロントエンドはドメイン間でバックグラウンド データを取得できるようになります。他のバックエンド開発方法でも同様であり、最終的な目標は、フロントエンドが何もする必要がありません。

以上がCORS クロスドメイン リクエストを実装する Java の分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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