Heim > Web-Frontend > js-Tutorial > Wie vermeide ich das Festlegen benutzerdefinierter Header im Header „Access-Control-Request-Headers' in jQuery AJAX POST-Anfragen?

Wie vermeide ich das Festlegen benutzerdefinierter Header im Header „Access-Control-Request-Headers' in jQuery AJAX POST-Anfragen?

DDD
Freigeben: 2024-11-05 14:36:02
Original
681 Leute haben es durchsucht

How to Avoid Setting Custom Headers in the

Umgang mit komplexen Headern in AJAX POST-Anfragen mit jQuery

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

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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage