問題の説明:
CORS (クロスオリジン) 経由でフォーム データを送信しようとしたときリソース共有) www.siteone.com から www.sitetwo.com にアクセスすると、次のエラーが発生します:
XMLHttpRequest cannot load http://www.sitetwo.com/cors.php. Origin http://www.siteone.com is not allowed by Access-Control-Allow-Origin.
www.sitetwo.com の cors.php で次のヘッダーを設定しているにもかかわらず:
header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
解決策:
問題は、CORS リクエスト ヘッダーの処理方法にあります。次の cors.php の更新されたコードは、CORS リクエストに対するより包括的な応答を提供します。
<code class="php"><?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); } // Respond to the request echo "You have CORS!"; ?></code>
この改訂されたコードは、あらゆるオリジンからのクロスオリジン リクエストを許可し、リクエスト メソッドとヘッダーを検証し、CORS レスポンスをキャッシュします。 OPTIONS リクエストに適切に応答します。
以上がCORS リクエストが「Origin は Access-Control-Allow-Origin によって許可されていません」というメッセージで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。