Heim > Web-Frontend > js-Tutorial > Wie kann ich CORS-Header in PHP richtig konfigurieren, um Cross-Origin-Request-Fehler zu vermeiden?

Wie kann ich CORS-Header in PHP richtig konfigurieren, um Cross-Origin-Request-Fehler zu vermeiden?

Mary-Kate Olsen
Freigeben: 2024-12-16 06:15:16
Original
255 Leute haben es durchsucht

How Can I Properly Configure CORS Headers in PHP to Avoid Cross-Origin Request Errors?

Cross-Origin Request Header (CORS) mit PHP-Headern

Cors verstehen

Cross-Origin Request Sharing (CORS) ist ein Mechanismus, der dies ermöglicht Browser, um ursprungsübergreifende HTTP-Anfragen sicher durchzuführen und so die Kommunikation zwischen verschiedenen Domänen oder Subdomänen zu ermöglichen. Dieser Mechanismus hilft, unbefugten Zugriff auf Ressourcen zu verhindern und gewährleistet Datenschutz und Sicherheit.

CORS-Fluss mit Beispiel-Headern

Um den CORS-Fluss zu demonstrieren, betrachten wir ein vereinfachtes PHP-Skript:

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: *");
Nach dem Login kopieren

Dieses Skript ermöglicht ursprungsübergreifende Anfragen von jedem Ursprung und jedem Header. In bestimmten Fällen kann es jedoch zu einer Fehlermeldung wie der folgenden kommen:

Request header field X-Requested-With is not allowed by Access-Control-Allow-Headers
Nach dem Login kopieren

Behebung des Fehlers

Um CORS-Anfragen korrekt zu verarbeiten, müssen Sie die zulässigen Header explizit angeben. Eine umfassendere Funktion, die richtig auf CORS-Anfragen reagiert, ist:

function cors() {
    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');
    }

    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!";
}
Nach dem Login kopieren

Sicherheitshinweise

1. Validieren Sie HTTP_ORIGIN:
Wenn Sie einen HTTP_ORIGIN-Header erhalten, vergleichen Sie ihn immer mit einer Whitelist genehmigter Ursprünge, bevor Sie die Anfrage zulassen.

2. X-Requested-With-Validierung:
Das obige Skript erlaubt jeden Header, einschließlich X-Requested-With. Dies sollte ebenfalls validiert werden, insbesondere in einer Produktionsumgebung.

3. Lesen Sie die CORS-Spezifikation:
Ein umfassendes Verständnis von CORS finden Sie in den offiziellen Spezifikationen:

  • [HTTP-Zugriffskontrolle](https://developer.mozilla.org/en /HTTP_access_control)
  • [Abrufen Standard](https://fetch.spec.whatwg.org/#http-cors-protocol)

TL;DR

  • CORS ermöglicht ursprungsübergreifende HTTP-Anfragen indem Sie die Sicherheitsrichtlinie des Browsers ändern.
  • Bei der Beantwortung von CORS-Anfragen müssen Sie den Access-Control-Allow-Origin festlegen Header.
  • Geben Sie die zulässigen Header explizit mit Access-Control-Allow-Headers an.
  • Validieren Sie aus Sicherheitsgründen immer HTTP_ORIGIN und andere relevante Header.

Das obige ist der detaillierte Inhalt vonWie kann ich CORS-Header in PHP richtig konfigurieren, um Cross-Origin-Request-Fehler zu vermeiden?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage