2010-03-17 3 views
13

Est-il possible, avant d'envoyer un message http, de supprimer des en-têtes http spécifiques en utilisant javascript/XmlHttpRequest? J'utilise un navigateur propriétaire, donc il n'y a aucun moyen de le faire en utilisant une solution spécifique au navigateur.Comment supprimer les en-têtes HTTP spécifiques en Javascript

Par exemple, je veux supprimer l'en-tête 'Autorisation' avant d'envoyer le message

POST /social/rpc?oauth_version=1.0& ... HTTP/1.1 

Accept: text/html, image/png, image/*, */* 
Accept-Language: ko 
Authorization: Basic Og== 
Host: test.myhost.com 

Cordialement

Répondre

14

Vous pouvez utiliser la méthode setRequestHeader de l'objet XmlHttpRequest en supposant que votre navigateur le supporte, il fait partie du W3C spec. It is also implemented by IE.

var req = new XMLHttpRequest(); 
req.setRequestHeader("Authorization", ""); 
+0

Je viens de comprendre maintenant que ce n'est plus nécessaire pour moi. Je pensais que cela causait des problèmes mais pas. Merci quand même. – Andres

+10

Selon la spécification, cela ne devrait jamais supprimer les en-têtes. Il va seulement ajouter des valeurs. Donc même si vous passez la valeur null ou "" cela ne changera pas la valeur d'origine. – Marco

+0

En fait, il l'a fait. – madhairsilence

4

jamais fait, mais en théorie, vous pouvez essayer:

xhr.setRequestHeader('Authorization', null); 

Il existe également une fonction removeRequestHeader() non spécifiée dans certaines implémentations, vous pouvez également essayer.

3

Lorsque j'utilise jquery-file-upload et Wanner le supprimer dans la méthode options, mis à null ou '' pas fonctionne pour moi, je l'utilise:

req.setRequestHeader("Authorization");

Il fonctionne pour moi .

+0

Comment utiliser 'setRequestHeader' supprime l'en-tête' Authorization' pour vous? Je ne comprends pas. qu'est-ce que 'req' de toute façon? – vsync

+0

@vsync XMLHttpRequest (xhr) – Fancyoung

0

La réponse d'Adam n'a pas fonctionné pour moi. Cependant, ce qui suit a été fait:

xhr.setRequestHeader('Authorization', ' '); 

remarque, le deuxième paramètre est une chaîne contenant un espace au lieu de l'espace vide. Il ne supprime pas complètement l'en-tête, mais le définit sur la chaîne vide, ce qui peut suffire dans certains cas.

Questions connexes