ホームページ > ウェブフロントエンド > jsチュートリアル > クロスオリジンリクエストエラーを回避するために、PHP で CORS ヘッダーを適切に設定するにはどうすればよいですか?

クロスオリジンリクエストエラーを回避するために、PHP で CORS ヘッダーを適切に設定するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-16 06:15:16
オリジナル
249 人が閲覧しました

How Can I Properly Configure CORS Headers in PHP to Avoid Cross-Origin Request Errors?

Cross-Origin Request Headers (CORS) と PHP ヘッダー

CORS について

Cross-Origin Request Sharing (CORS) は、次のことを可能にするメカニズムです。ブラウザがクロスオリジン HTTP リクエストを安全に実行できるようになり、異なるドメインまたはサブドメイン間の通信が可能になります。このメカニズムは、リソースへの不正アクセスを防止し、データのプライバシーとセキュリティを確保するのに役立ちます。

サンプル ヘッダーを使用した CORS フロー

CORS フローを示すために、簡略化された PHP スクリプトを考えてみましょう。

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: *");
ログイン後にコピー

このスクリプトは、任意のオリジンおよび任意のヘッダーからのクロスオリジン リクエストを許可します。ただし、場合によっては、次のようなエラー メッセージが表示されることがあります。

Request header field X-Requested-With is not allowed by Access-Control-Allow-Headers
ログイン後にコピー

エラーへの対処

CORS リクエストを正しく処理するには、許可されるヘッダーを明示的に指定する必要があります。 CORS リクエストに適切に応答するより包括的な関数は、

function cors() {
    if (isset($_SERVER['HTTP_ORIGIN'])) {
        header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
        header('Access-Control-Allow-Credentials: true');
        header('Access-Control-Max-Age: 86400');
    }

    if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) {
            header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
        }
        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) {
            header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
        }
        exit(0);
    }

    echo "You have CORS!";
}
ログイン後にコピー

セキュリティ ノート

1 です。 HTTP_ORIGIN を検証します:
HTTP_ORIGIN ヘッダーを受信した場合は、リクエストを許可する前に、必ず承認されたオリジンのホワイトリストと照合してください。

2. X-Requested-With 検証:
上記のスクリプトでは、X-Requested-With を含む任意のヘッダーが許可されます。特に運用環境では、これも検証する必要があります。

3. CORS 仕様をお読みください:
CORS の包括的な理解については、公式仕様を参照してください:

  • [HTTP アクセス コントロール](https://developer.mozilla.org/en) /HTTP_access_control)
  • [フェッチStandard](https://fetch.spec.whatwg.org/#http-cors-protocol)

TL;DR

  • CORS によりクロスオリジン HTTP リクエストが有効になりますブラウザのセキュリティ ポリシーを変更します。
  • CORS リクエストに応答するときは、Access-Control-Allow-Origin を設定する必要があります。 header.
  • Access-Control-Allow-Headers を使用して、許可されるヘッダーを明示的に指定します。
  • セキュリティ上の理由から、HTTP_ORIGIN およびその他の関連ヘッダーを常に検証します。

以上がクロスオリジンリクエストエラーを回避するために、PHP で CORS ヘッダーを適切に設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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