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
Freigeben: 2024-11-03 04:55:02
Original
462 Leute haben es durchsucht

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.
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage