Heim  >  Artikel  >  Backend-Entwicklung  >  Warum funktioniert meine CORS-Implementierung in PHP nicht?

Warum funktioniert meine CORS-Implementierung in PHP nicht?

Barbara Streisand
Barbara StreisandOriginal
2024-11-04 10:24:29413Durchsuche

Why is my CORS implementation not working in PHP?

CORS funktioniert in PHP nicht: Ein gelöster Fall

Die Implementierung von Cross-Origin Resource Sharing (CORS) zur Erleichterung des Datenaustauschs über verschiedene Ursprünge hinweg ist eine gemeinsame Herausforderung. Es kann jedoch frustrierend sein, auf CORS-bezogene Fehler zu stoßen.

Ein Benutzer berichtete kürzlich, dass er Probleme mit CORS hatte, als er versuchte, Formulardaten von www.siteone.com an www.sitetwo.com zu übermitteln. Trotz Implementierung der erforderlichen Header-Einstellungen in der Datei „cors.php“ auf der Zieldomäne erhielt der Benutzer „Access-control-Allow-Origin“-Fehler.

Analyse und Lösung:

Bei der Untersuchung des Codes und der Header wurde festgestellt, dass die anfängliche Implementierung der CORS-Header unvollständig war. Der folgende Codeausschnitt, der in „cors.php“ verwendet wurde, war nicht ausreichend:

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

Um CORS-Anfragen umfassend zu bearbeiten, ist eine detailliertere Antwort erforderlich. Der folgende aktualisierte Code lieferte eine gültige Lösung:

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

Schlussfolgerung:

Der CORS-Implementierungsfehler wurde durch die Einbindung der zusätzlichen Codezeilen behoben, die Anfragen von jedem Ursprung erlaubten , aktivierte Anmeldeinformationen und legt eine Cache-Dauer fest. Diese verbesserte CORS-Verarbeitung stellte einen erfolgreichen ursprungsübergreifenden Datenaustausch sicher.

Das obige ist der detaillierte Inhalt vonWarum funktioniert meine CORS-Implementierung in PHP nicht?. 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
Vorheriger Artikel:So lernen Sie PHPNächster Artikel:So lernen Sie PHP