En-têtes de requête de contrôle d'accès : comprendre l'ajout aux en-têtes AJAX avec jQuery
Dans les requêtes jQuery AJAX, des en-têtes personnalisés peuvent être ajoutés pour améliorer la requête personnalisation. Toutefois, certains en-têtes peuvent ne pas apparaître dans le format attendu. Cet article vise à expliquer pourquoi les en-têtes personnalisés peuvent apparaître à la place sous la forme "Access-Control-Request-Headers".
Lorsqu'une requête d'origine croisée est effectuée, le navigateur effectue une requête de contrôle en amont à l'aide de la méthode OPTIONS. Cette demande de contrôle en amont détermine si la demande réelle est autorisée. Au cours de cette requête de contrôle en amont, le navigateur envoie des en-têtes indiquant les méthodes HTTP et les en-têtes que la requête réelle utilisera.
L'un de ces en-têtes est l'en-tête "Access-Control-Request-Headers". Il répertorie les en-têtes personnalisés que la demande réelle inclura. En effet, le navigateur doit obtenir l'autorisation du serveur pour envoyer ces en-têtes personnalisés.
Par conséquent, lorsque vous envoyez un en-tête personnalisé dans une requête AJAX POST, il est ajouté au fichier "Access-Control-Request- En-tête Headers" dans la requête OPTIONS de contrôle en amont. Il s'agit d'un comportement de navigateur destiné à prévenir les vulnérabilités de sécurité d'origine croisée.
Résoudre le problème d'en-tête personnalisé
Pour inclure des en-têtes personnalisés directement dans la requête réelle, il est essentiel de configurez le serveur pour gérer les demandes de contrôle en amont et accorder l'autorisation pour les en-têtes personnalisés spécifiés. Cette configuration est spécifique au serveur et nécessite que les autorisations soient définies de manière appropriée.
Exemple avec jQuery
L'exemple jQuery fourni montre comment définir un en-tête personnalisé :
$.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)); } });
En suivant ces directives, les développeurs peuvent ajouter efficacement des en-têtes personnalisés aux requêtes AJAX, garantissant ainsi que le navigateur adhère aux protocoles de sécurité d'origine croisée.
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!