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 ?

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
Libérer: 2024-11-07 19:08:02
original
538 Les gens l'ont consulté

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

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
...
Copier après la connexion

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

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal