検索
ホームページウェブフロントエンドjsチュートリアルCORS (Cross-Origin Resource Sharing) の概要 CORS とは何ですか?

Introduction to CORS (Cross-Origin Resource Sharing) What is CORS?

CORS (Cross-Origin Resource Sharing) は、Web ブラウザーによって実装されるセキュリティ機能で、Web アプリケーションが Web ページを提供したドメインとは異なるドメインにリクエストを行うことを許可または制限します。 。簡単に言うと、CORS は、あるドメイン上のリソースに別のドメインの Web ページからアクセスできるかどうかを決定します。

デフォルトでは、Web ブラウザーは同一生成元ポリシーを適用し、Web ページがそのページを提供したドメインとは異なるドメインにリクエストを送信することをブロックします。これは、悪意のある Web サイトが他の Web サイト上の機密データにアクセスするのを防ぐために行われます。ただし、場合によっては、Web アプリケーションが別の送信元 (ドメイン、プロトコル、ポート) からリソースを要求する必要がある場合、CORS が役に立ちます。

CORS の動作

あるドメイン上の Web アプリケーションが別のドメインからデータをリクエストする必要がある場合、リクエストの発信元を示す特定のヘッダーを含む HTTP リクエストを送信します。要求されたリソースをホストするサーバーは、応答で適切な CORS ヘッダーを送信することで、要求を許可するかどうかを決定する必要があります。

たとえば、http://example.com でホストされるフロントエンド アプリケーションを構築していて、http://api.example2.com からデータをフェッチする必要がある場合、CORS ヘッダーによりサーバーは api.example2 にアクセスできます。 com を使用して、example.com.

からのリクエストを許可するかどうかを指定します。

一般的な使用例

CORS は通常、次のシナリオで必要になります。

サードパーティ API アクセス: 最新の Web アプリケーションの多くは、認証、支払い処理、ソーシャル メディア統合などのサービスを外部 API に依存しています。 CORS は、これらの API が異なるドメインでホストされている場合に必要です。

フロントエンドとバックエンドの通信: Web アプリケーションのフロントエンドとバックエンドが異なるドメインまたはサブドメインでホストされている場合、それらの間の通信を許可するために CORS が使用されます。

CDN (コンテンツ配信ネットワーク): Web サイトは多くの場合、画像、スタイルシート、JavaScript ファイルなどの静的アセットを提供するために CDN を使用します。 CORS により、メイン サイトは、別のオリジンでホストされている CDN からこれらのリソースをリクエストできます。

CORS の主要なパラメーターとインジケーター

Access-Control-Allow-Origin: このヘッダーは CORS で最も重要であり、どのオリジンがリソースへのアクセスを許可されているかを示します。次のように設定できます:

特定のオリジン (Access-Control-Allow-Origin: https://example.com)
ワイルドカード (Access-Control-Allow-Origin: *)。任意のオリジンがリソースにアクセスできるようにします。ただし、これは認証情報を含むリクエストでは許可されません。
Access-Control-Allow-Methods: リソースへのアクセス時にどの HTTP メソッド (GET、POST、PUT、DELETE など) を許可するかを指定します。例:
アクセス制御許可メソッド: GET、POST、PUT

Access-Control-Allow-Headers: 実際のリクエストを行うときに使用できる HTTP ヘッダーをリストします。たとえば、リクエストに X-Custom-Header のようなカスタム ヘッダーが含まれている場合は、ここで指定する必要があります:
Access-Control-Allow-Headers: X-Custom-Header、Content-Type

Access-Control-Allow-Credentials: リクエストに Cookie、HTTP 認証、クライアント側の証明書などの資格情報を含めることができるかどうかを示します。これは、認証が必要な API にとって重要です。例: Access-Control-Allow-Credentials: true

Access-Control-Expose-Headers: ブラウザーが要求側クライアントに公開するヘッダーを指定します。デフォルトでは、ブラウザーは Cache-Control や Content-Type などの限られたヘッダー セットのみを公開しますが、Access-Control-Expose-Headers を使用すると追加のヘッダーを利用できるようになります。

Access-Control-Max-Age: プリフライト リクエスト (以下を参照) の結果をブラウザーがキャッシュできる期間を定義します。プリフライト リクエストの数を減らすことにより、パフォーマンスの向上に役立ちます。例:
Access-Control-Max-Age: 86400 (24 時間)

プリフライト リクエスト: 特定の種類のリクエスト、特にサーバー データを変更するリクエスト (PUT や DELETE など) の場合、ブラウザは HTTP OPTIONS メソッドを使用してプリフライト リクエストを送信します。これにより、実際のリクエストが安全に送信できるかどうかがサーバーに確認されます。プリフライト リクエストに対するサーバーの応答によって、ブラウザが実際のリクエストを続行するかどうかが決まります。

CORS が必要になるのはいつですか?

CORS は次の場合に必要です。

クロスオリジンリクエストは、フロントエンドとバックエンドが異なるドメインまたはポートから提供されている場合、またはアプリケーションから外部 API にアクセスしている場合に行われます。

CDN またはサードパーティ サービスでホストされているリソースへのアクセス: たとえば、CDN からフォント、画像、またはその他のアセットを読み込む場合、サイトがそれらにアクセスできるようにサーバーに CORS ヘッダーが含まれている必要があります。

セキュリティ上の懸念: CORS を有効にするとクロスオリジン リクエストが許可されますが、アプリケーションが悪意のある攻撃にさらされないように慎重に構成する必要があります。信頼できるオリジンのみを許可し、機密性の高い操作は認証トークンなどの追加のセキュリティ手段で保護する必要があります。

結論

CORS は、異なるオリジン間でリソースを安全かつ制御された共有を確保するための重要なメカニズムです。適切に構成すると、ユーザーをセキュリティ リスクから保護しながら、最新の Web アプリケーションがサードパーティのサービスや API と対話できるようになります。 CORS ヘッダーの構成方法を理解し、それらがいつ、なぜ必要になるかを知ることは、API、CDN、またはマルチドメイン アプリケーションを扱う Web 開発者にとって不可欠です。

以上がCORS (Cross-Origin Resource Sharing) の概要 CORS とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

JavaScriptはCで書かれていますか?証拠を調べるJavaScriptはCで書かれていますか?証拠を調べるApr 25, 2025 am 12:15 AM

はい、JavaScriptのエンジンコアはCで記述されています。1)C言語は、JavaScriptエンジンの開発に適した効率的なパフォーマンスと基礎となる制御を提供します。 2)V8エンジンを例にとると、そのコアはCで記述され、Cの効率とオブジェクト指向の特性を組み合わせて書かれています。3)JavaScriptエンジンの作業原理には、解析、コンパイル、実行が含まれ、C言語はこれらのプロセスで重要な役割を果たします。

JavaScriptの役割:WebをインタラクティブでダイナミックにするJavaScriptの役割:WebをインタラクティブでダイナミックにするApr 24, 2025 am 12:12 AM

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScript:接続が説明しましたCおよびJavaScript:接続が説明しましたApr 23, 2025 am 12:07 AM

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

Webサイトからアプリまで:JavaScriptの多様なアプリケーションWebサイトからアプリまで:JavaScriptの多様なアプリケーションApr 22, 2025 am 12:02 AM

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Python vs. JavaScript:ユースケースとアプリケーションと比較されますPython vs. JavaScript:ユースケースとアプリケーションと比較されますApr 21, 2025 am 12:01 AM

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

JavaScript通訳者とコンパイラにおけるC/Cの役割JavaScript通訳者とコンパイラにおけるC/Cの役割Apr 20, 2025 am 12:01 AM

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

JavaScript in Action:実際の例とプロジェクトJavaScript in Action:実際の例とプロジェクトApr 19, 2025 am 12:13 AM

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール