Maison >interface Web >js tutoriel >Comment inclure des en-têtes personnalisés dans une requête AJAX POST sans déclencher une vérification préalable au vol ?
Lors des requêtes AJAX POST à l'aide de jQuery, il est possible d'inclure des en-têtes personnalisés pour contrôler le comportement de la requête . Cependant, il est crucial de comprendre le rôle des en-têtes de demande de contrôle d'accès (CORS) dans les requêtes d'origine croisée.
Par défaut, jQuery fait précéder les requêtes d'origine croisée par une requête OPTIONS pour lancer une vérification avant vol. . Cette vérification garantit que le serveur autorise la méthode HTTP spécifique et les en-têtes inclus dans la demande d'origine. Lors de cette vérification préalable, jQuery ajoute automatiquement l'en-tête Access-Control-Request-Headers à la requête, qui spécifie les en-têtes personnalisés présents dans la requête d'origine.
Dans l'exemple fourni :
$.ajax({ ... headers: { "My-First-Header":"first value", "My-Second-Header":"second value" } ... })
Les paramètres de la requête incluent deux en-têtes personnalisés. Lorsque la vérification préalable est lancée, le navigateur modifie automatiquement les en-têtes de requête comme suit :
... Access-Control-Request-Headers: My-First-Header,My-Second-Header ...
Cela garantit que le serveur connaît les en-têtes personnalisés à inclure dans la requête POST réelle. Cependant, les en-têtes personnalisés eux-mêmes ne sont pas présents dans la demande de vérification avant vol.
Pour inclure les en-têtes personnalisés dans la requête POST réelle, vous pouvez utiliser la fonction beforeSend comme suit :
$.ajax({ ... beforeSend: function(xhr) { xhr.setRequestHeader("My-First-Header", "first value"); xhr.setRequestHeader("My-Second-Header", "second value"); } ... })
Dans ce cas, les en-têtes personnalisés seront inclus directement dans la requête POST, sans déclencher de vérification pré-vol. Notez que pour les requêtes d'origine croisée, le serveur doit explicitement autoriser les en-têtes spécifiés dans son en-tête de réponse Access-Control-Allow-Headers.
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!