Maison > interface Web > js tutoriel > Comment éviter de définir des en-têtes personnalisés dans l'en-tête « Access-Control-Request-Headers » dans les requêtes jQuery AJAX POST ?

Comment éviter de définir des en-têtes personnalisés dans l'en-tête « Access-Control-Request-Headers » dans les requêtes jQuery AJAX POST ?

DDD
Libérer: 2024-11-05 14:36:02
original
682 Les gens l'ont consulté

How to Avoid Setting Custom Headers in the

Gestion des en-têtes complexes dans les requêtes AJAX POST avec jQuery

Contexte :

Dans les requêtes AJAX POST utilisant jQuery, en-têtes personnalisés peuvent être ajoutés pour améliorer la communication avec le serveur. Le défi réside dans l'observation que des en-têtes personnalisés sont ajoutés à l'en-tête "Access-Control-Request-Headers" moins couramment observé au lieu des en-têtes prévus.

Explication :

Lorsqu'un navigateur envoie une requête AJAX à un domaine différent de celui d'où il provient, le navigateur envoie d'abord une requête de « contrôle en amont » (méthode OPTIONS) pour vérifier si le serveur autorise les en-têtes personnalisés. Ceci est fait pour empêcher les attaques de scripts intersites (XSS).

Dans le cadre de cette demande de contrôle en amont, le navigateur ajoute l'en-tête "Access-Control-Request-Headers", qui répertorie les en-têtes personnalisés qui seront envoyé dans la demande réelle. Le serveur répond avec un code d'état "204 No Content" et un en-tête "Access-Control-Allow-Headers" spécifiant quels en-têtes personnalisés sont autorisés.

Solution :

Pour éviter ce comportement et définir des en-têtes personnalisés directement dans la requête POST, vous pouvez définir explicitement les en-têtes dans la fonction "beforeSend" de l'appel jQuery Ajax. Cela garantit que les en-têtes sont ajoutés à la demande avant son envoi, en contournant le processus de demande de contrôle en amont.

Voici un exemple de la façon de définir un en-tête dans un appel jQuery Ajax :

$.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));
  }
});
Copier après la connexion

En définissant l'en-tête dans la fonction "beforeSend", jQuery ajoutera l'en-tête "Authority" à la requête POST réelle, vous permettant de transmettre des requêtes personnalisées en-têtes et recevez la réponse attendue du serveur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal