Cross-Origin Resource Sharing (CORS) は、リソースを要求するときにブラウザーが AJAX 要求を異なるドメインに送信できるようにする Web テクノロジです。 Web サービスを使用する場合、CORS を使用すると、ブラウザーは別のドメインからデータを要求できます。この記事では、PHP プロジェクトでクロスドメイン アクセスを設定する方法を紹介します。
クロスドメインとは何ですか?
クロスドメインとは、Web 開発において、ブラウザーによって実行されるスクリプトが、ページの送信元サーバーとは異なるオリジンにアクセスしようとすることを指します。たとえば、www.example.com の Web ページで、スクリプトが http://www.example.org のサーバーにアクセスしようとする場合、それはクロスドメイン要求と呼ばれます。
なぜクロスドメインを設定する必要があるのですか?
Web ブラウザは、同一オリジン ポリシーを実装しています。これは、スクリプトが同じオリジン サイトのコンテンツにのみアクセスするように制限する基本的な Web セキュリティ ポリシーです。相同サイトとは、同じ プロトコル、ドメイン名、ポート を持つサイトを指します。同一オリジン ポリシーの制限がなければ、クロスドメイン リクエストによってユーザーのアカウントが簡単に攻撃される可能性があります。たとえば、オンラインで書籍を購入すると、悪意のあるスクリプトが別のドメインからアカウントに簡単にアクセスし、アカウントを使用して支払いを行うことができます。
クロスドメインを設定するにはどうすればよいですか?
PHP プロジェクトでは、応答ヘッダーを設定することでクロスオリジン リクエスト (CORS) を構築できます。
特定のドメインからのリクエストを許可する「Access-Control-Allow-Origin」応答ヘッダーを設定します。たとえば、AJAX リクエストで「http://localhost:3000」からリクエストを送信する必要がある場合、サーバーの応答ヘッダーに次の行を追加できます。
header("Access-Control-Allow-Origin:http://localhost:3000");
Allow-Origin を設定すると、特定のドメイン名に対するクロスドメイン要求が許可され、Access-Control-Allow-カスタムリクエストヘッダーを許可するには、ヘッダーも設定する必要があります。たとえば、AJAX リクエストでカスタム リクエスト ヘッダー「X-Custom-Header」を送信する場合は、応答ヘッダーに次の行を追加する必要があります。
header("Access-Control-Allow-Headers: X-Custom-Header");
Access-Control-Allow-Methods 応答ヘッダーに次の行を追加することで、どの要求メソッドが許可されるかを指定します。たとえば、この設定例では GET メソッドと POST メソッドが許可されています。
header('Access-Control-Allow-Methods: GET, POST');
Cookie を送信する必要がある場合は、Access-Control-Allow-Credentials を「true」に設定する必要があります。たとえば、ブラウザに Cookie をリクエストするように依頼します。
header('Access-Control-Allow-Credentials: true');
概要
PHP プロジェクトでクロスドメイン リクエスト (CORS) を実装するには、Access-Control-Allow-Origin、Access-Control-Allow-Headers、Access-Key を設定して応答ヘッダーを設定する必要があります。 Control-Allow-Methods や Access-Control-Allow-Credentials などの応答ヘッダーを使用すると、ブラウザーはリクエストを送信するときにクロスドメイン リクエストを許可できます。
以上がクロスドメインPHPプロジェクトの設定方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。