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!