Heim >Backend-Entwicklung >PHP-Tutorial >Warum funktioniert CORS in meiner PHP-Anwendung nicht, obwohl Access-Control-Allow-Origin-Header gesetzt sind?

Warum funktioniert CORS in meiner PHP-Anwendung nicht, obwohl Access-Control-Allow-Origin-Header gesetzt sind?

DDD
DDDOriginal
2024-11-03 04:55:02437Durchsuche

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

CORS funktioniert nicht in PHP

Beim Versuch, eine POST-Anfrage mit Formulardaten von www.siteone.com an www.sitetwo zu senden. com, das CORS verwendet, ist der folgende Fehler aufgetreten:

XMLHttpRequest cannot load http://www.sitetwo.com/cors.php. Origin http://www.siteone.com is not allowed by Access-Control-Allow-Origin.

Trotz der Konfiguration der CORS-Header in cors.php auf www.sitetwo.com:

<code class="php">header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');</code>

Die Anfrage schlägt immer noch fehl auf eine fehlerhafte Implementierung der Header-Konfiguration zurückzuführen. Der aktualisierte Code, der dieses Problem behebt, lautet:

<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>

Dieser überarbeitete Code reagiert auf die bei OPTIONS-Anfragen empfangenen Access-Control-Header und lässt Anfragen von jedem Ursprung zu, sodass CORS ordnungsgemäß funktioniert.

Das obige ist der detaillierte Inhalt vonWarum funktioniert CORS in meiner PHP-Anwendung nicht, obwohl Access-Control-Allow-Origin-Header gesetzt sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn