Access-Control-Allow-Origin ヘッダーを設定しているにもかかわらず、PHP アプリケーションで CORS が機能しないのはなぜですか?

DDD
リリース: 2024-11-03 04:55:02
オリジナル
388 人が閲覧しました

Why is CORS not working in my PHP application despite setting Access-Control-Allow-Origin headers?

CORS が PHP で機能しない

www.siteone.com から www.sitetwo にフォーム データを含む POST リクエストを送信しようとしたとき。 CORS を使用して 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 で CORS ヘッダーを設定しているにもかかわらず、

<code class="php">header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');</code>
ログイン後にコピー

リクエストはまだ失敗しています。ヘッダー構成の不適切な実装が原因です。この問題に対処する更新されたコードは次のとおりです。

<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>
ログイン後にコピー

この改訂されたコードは、OPTIONS リクエスト中に受信した Access-Control ヘッダーに応答し、あらゆるオリジンからのリクエストを許可し、CORS が適切に機能できるようにします。

以上がAccess-Control-Allow-Origin ヘッダーを設定しているにもかかわらず、PHP アプリケーションで CORS が機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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