PHP で CORS が機能しない: 解決済みのケース
異なるオリジン間でのデータ交換を容易にするクロスオリジン リソース共有 (CORS) の実装は次のとおりです。共通の課題。ただし、CORS 関連のエラーが発生するとイライラすることがあります。
最近、あるユーザーから、www.siteone.com から www.sitetwo.com にフォーム データを送信しようとしたときに CORS に関する問題が発生したと報告されました。ターゲット ドメインの「cors.php」ファイルに必要なヘッダー設定を実装したにもかかわらず、ユーザーは「Access-control-Allow-Origin」エラーを受け取りました。
分析と解決策:
コードとヘッダーを調査したところ、CORS ヘッダーの初期実装が不完全であることが判明しました。 「cors.php」で使用されている次のコード スニペットでは十分ではありませんでした:
<code class="php">header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: POST, GET, OPTIONS');</code>
CORS リクエストを包括的に処理するには、より詳細な応答が必要です。次の更新されたコードは、有効な解決策を提供しました:
<code class="php">// Allow from any origin 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'); // cache for 1 day } // Access-Control headers are received during OPTIONS requests 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!";</code>
結論:
CORS 実装エラーは、任意のオリジンからのリクエストを許可する追加のコード行を組み込むことで解決されました。 、資格情報を有効にし、キャッシュ期間を設定します。この強化された CORS 処理により、クロスオリジンのデータ交換が確実に成功しました。
以上がCORS 実装が PHP で機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。