Hintergrund:
In AJAX POST-Anfragen mit jQuery benutzerdefinierte Header kann hinzugefügt werden, um die Kommunikation mit dem Server zu verbessern. Die Herausforderung besteht darin, zu beobachten, dass anstelle der beabsichtigten Header benutzerdefinierte Header zum weniger häufig beobachteten Header „Access-Control-Request-Headers“ hinzugefügt werden.
Erklärung:
Wenn ein Browser eine AJAX-Anfrage an eine andere Domäne sendet als die, von der sie stammt, sendet der Browser zunächst eine „Preflight“-Anfrage (OPTIONS-Methode), um zu prüfen, ob der Server die benutzerdefinierten Header zulässt. Dies geschieht, um Cross-Site-Scripting-Angriffe (XSS) zu verhindern.
Als Teil dieser Preflight-Anfrage fügt der Browser den Header „Access-Control-Request-Headers“ hinzu, der die benutzerdefinierten Header auflistet, die verwendet werden in der eigentlichen Anfrage gesendet. Der Server antwortet mit dem Statuscode „204 No Content“ und einem Header „Access-Control-Allow-Headers“, der angibt, welche benutzerdefinierten Header zulässig sind.
Lösung:
Um dieses Verhalten zu vermeiden und benutzerdefinierte Header direkt in der POST-Anfrage festzulegen, können Sie die Header explizit in der Funktion „beforeSend“ des jQuery-Ajax-Aufrufs festlegen. Dadurch wird sichergestellt, dass die Header der Anfrage hinzugefügt werden, bevor sie gesendet wird, wodurch der Preflight-Anfrageprozess umgangen wird.
Hier ist ein Beispiel für das Festlegen eines Headers in einem jQuery-Ajax-Aufruf:
$.ajax({ type: "POST", beforeSend: function(request) { request.setRequestHeader("Authority", authorizationToken); }, url: "entities", data: "json=" + escape(JSON.stringify(createRequestObject)), processData: false, success: function(msg) { $("#results").append("The result =" + StringifyPretty(msg)); } });
Durch das Festlegen des Headers in der Funktion „beforeSend“ fügt jQuery den Header „Authority“ zur eigentlichen POST-Anfrage hinzu, sodass Sie benutzerdefinierte Header übergeben und die erwartete Serverantwort erhalten können.
Das obige ist der detaillierte Inhalt vonWie vermeide ich das Festlegen benutzerdefinierter Header im Header „Access-Control-Request-Headers' in jQuery AJAX POST-Anfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!