ホームページ  >  記事  >  バックエンド開発  >  PHP 開発における Cross-Origin Resource Sharing (CORS) の問題にどう対処するか?

PHP 開発における Cross-Origin Resource Sharing (CORS) の問題にどう対処するか?

PHPz
PHPzオリジナル
2023-11-02 18:39:241046ブラウズ

PHP 開発における Cross-Origin Resource Sharing (CORS) の問題にどう対処するか?

PHP 開発におけるクロスオリジン リソース共有 (CORS) の問題にどう対処するか?

Web 開発では、クロスオリジン リソース共有 (CORS) が一般的な問題です。これは、Web ページがクロスオリジン リソース (たとえば、別のドメイン名から) をリクエストするときに、ブラウザーが特別なメカニズムを使用してリソースへのアクセスをブロックまたは制限することを指します。これはセキュリティとプライバシーを確​​保するためですが、PHP 開発では CORS の問題に対処する必要がある場合があります。では、この問題をどうやって解決すればよいでしょうか?

1. CORS を理解する

CORS メカニズムはブラウザーによって実装されます。現在の Web ページがクロスドメイン リソースを要求していることをブラウザが検出すると、ブラウザはプリフライト リクエスト (OPTIONS) を送信し、サーバーはそのリクエストに対する応答を返し、クロスドメイン リクエストを許可するかどうかをブラウザに伝えます。 。サーバーから返された応答にクロスオリジン要求を許可するヘッダー情報が含まれている場合、ブラウザは実際の要求を送信します。そうしないと、ブラウザにエラーが表示されます。

2. CORS 問題に対処する方法

PHP 開発では、次の方法を使用して CORS 問題に対処できます:

  1. Set Access-Control- Allow-Origin ヘッダー情報

header() 関数を使用して応答ヘッダー情報を設定します。任意のドメイン名からのクロスドメイン アクセスを許可するには、Access-Control-Allow-Origin を "*" に設定します。例:

header("Access-Control-Allow-Origin: *");

注: Access-Control-Allow-Origin を「*」に設定すると、任意のドメイン名からのクロスドメイン アクセスが許可されるため、セキュリティ リスクが生じる可能性があります。実際の開発では、必要に応じてアクセスを許可するドメイン名を設定することをお勧めします。

  1. Access-Control-Allow-Methods ヘッダー情報の設定

Access-Control-Allow-Methods ヘッダー情報を設定することで、許可されるクロスドメイン リクエストのメソッドを指定できます。たとえば、GET リクエストと POST リクエストのクロスドメイン アクセスを許可する場合、Access-Control-Allow-Methods を「GET、POST」に設定できます。サンプル コードは次のとおりです。

header("Access-Control-Allow-Methods: GET, POST");
  1. プリフライト リクエストの処理

プリフライト リクエスト (オプション) は、実際のリクエストの前にサーバーをチェックするために使用されます。 PHP コードでは、リクエスト メソッドが OPTIONS の場合、Access-Control-Allow-Origin ヘッダー情報を含むレスポンスが返されることがわかります。例:

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
  header("Access-Control-Allow-Origin: *");
  header("Access-Control-Allow-Methods: GET, POST");
  exit;
}

このようにして、プリフライト要求を処理し、クロスドメイン許可ヘッダー情報を返すことができます。

  1. Access-Control-Allow-Headers ヘッダー情報の設定

クロスドメイン要求には、Authorization ヘッダーなどの特定のヘッダー情報が含まれる場合があります。デフォルトでは、ブラウザはこれらのヘッダーを含むクロスオリジンリクエストをブロックします。クロスドメイン要求でこれらのヘッダー情報を送信できるようにするには、サーバー側で Access-Control-Allow-Headers ヘッダー情報を設定する必要があります。サンプル コードは次のとおりです。

header("Access-Control-Allow-Headers: Authorization");

このようにして、クロスドメイン リクエストで Authorization ヘッダー情報を送信できるようになります。

3. 概要

PHP 開発では、クロスドメイン リソース共有 (CORS) の問題への対処は、考慮する必要がある重要な問題です。 CORS メカニズムを理解し、header() 関数を使用して応答ヘッダー情報を設定することで、この問題を簡単に解決できます。 Access-Control-Allow-Origin、Access-Control-Allow-Methods、Access-Control-Allow-Headers などのヘッダー情報を設定することで、クロスドメイン リソースへのアクセスを制御し、セキュリティとプライバシーを向上させることができます。 Webサイト。したがって、PHP 開発では、CORS の問題を適切に処理することが重要です。

以上がPHP 開発における Cross-Origin Resource Sharing (CORS) の問題にどう対処するか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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