Maison  >  Article  >  interface Web  >  Comment inclure des en-têtes personnalisés dans une requête AJAX POST sans déclencher une vérification préalable au vol ?

Comment inclure des en-têtes personnalisés dans une requête AJAX POST sans déclencher une vérification préalable au vol ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-07 19:08:02468parcourir

How do I include custom headers in an AJAX POST request without triggering a pre-flight check?

En-têtes de requête de contrôle d'accès : comprendre la vérification avant 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!

Déclaration:
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