Heim >Web-Frontend >js-Tutorial >Wie füge ich benutzerdefinierte Header in eine AJAX POST-Anfrage ein, ohne eine Preflight-Prüfung auszulösen?

Wie füge ich benutzerdefinierte Header in eine AJAX POST-Anfrage ein, ohne eine Preflight-Prüfung auszulösen?

Susan Sarandon
Susan SarandonOriginal
2024-11-07 19:08:02539Durchsuche

How do I include custom headers in an AJAX POST request without triggering a pre-flight check?

Zugriffskontroll-Anfrage-Header: Die Preflight-Prüfung verstehen

Beim Erstellen von AJAX-POST-Anfragen mit jQuery ist es möglich, benutzerdefinierte Header einzuschließen, um das Verhalten der Anfrage zu steuern . Es ist jedoch wichtig, die Rolle von Access-Control Request Headern (CORS) bei Cross-Origin-Anfragen zu verstehen.

Standardmäßig stellt jQuery Cross-Origin-Anfragen eine OPTIONS-Anfrage voran, um eine Pre-Flight-Prüfung zu initiieren . Durch diese Prüfung wird sichergestellt, dass der Server die spezifische HTTP-Methode und die in der ursprünglichen Anforderung enthaltenen Header zulässt. Während dieser Preflight-Prüfung fügt jQuery der Anfrage automatisch den Header „Access-Control-Request-Headers“ hinzu, der die in der ursprünglichen Anfrage vorhandenen benutzerdefinierten Header angibt.

Im bereitgestellten Beispiel:

$.ajax({
    ...
    headers: {
        "My-First-Header":"first value",
        "My-Second-Header":"second value"
    }
    ...
})

Die Anforderungsparameter umfassen zwei benutzerdefinierte Header. Wenn die Preflight-Prüfung initiiert wird, ändert der Browser die Anforderungsheader automatisch wie folgt:

...
Access-Control-Request-Headers: My-First-Header,My-Second-Header
...

Dadurch wird sichergestellt, dass der Server die benutzerdefinierten Header kennt, die in die eigentliche POST-Anfrage einbezogen werden sollen. Die benutzerdefinierten Header selbst sind jedoch in der Preflight-Check-Anfrage nicht vorhanden.

Um die benutzerdefinierten Header in die eigentliche POST-Anfrage einzubinden, können Sie die beforeSend-Funktion wie folgt verwenden:

$.ajax({
    ...
    beforeSend: function(xhr) {
        xhr.setRequestHeader("My-First-Header", "first value");
        xhr.setRequestHeader("My-Second-Header", "second value");
    }
    ...
})

In diesem Fall werden die benutzerdefinierten Header direkt in die POST-Anfrage eingefügt, ohne dass eine Preflight-Prüfung ausgelöst wird. Beachten Sie, dass der Server für Cross-Origin-Anfragen die angegebenen Header in seinem Access-Control-Allow-Headers-Antwortheader explizit zulassen muss.

Das obige ist der detaillierte Inhalt vonWie füge ich benutzerdefinierte Header in eine AJAX POST-Anfrage ein, ohne eine Preflight-Prüfung auszulösen?. 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