Cross-Origin Request Sharing (CORS) は、次のことを可能にするメカニズムです。ブラウザがクロスオリジン HTTP リクエストを安全に実行できるようになり、異なるドメインまたはサブドメイン間の通信が可能になります。このメカニズムは、リソースへの不正アクセスを防止し、データのプライバシーとセキュリティを確保するのに役立ちます。
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 の包括的な理解については、公式仕様を参照してください:
以上がクロスオリジンリクエストエラーを回避するために、PHP で CORS ヘッダーを適切に設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。