2010-03-17 5 views
13

Ist es möglich, vor dem Senden einer http-Nachricht, einige spezifische HTTP-Header mit Javascript/XmlHttpRequest entfernen?Wie HTTP spezifische Header in Javascript entfernen

Ich verwende einen proprietären Browser, so dass es keine browserspezifische Lösung gibt.

Zum Beispiel möchte ich den Header 'Authorization' entfernen, bevor die Nachricht senden

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 

Grüße

Antwort

14

Sie könnten die setRequestHeader-Methode des XmlHttpRequest-Objekts verwenden, vorausgesetzt Ihr Browser unterstützt sie. Sie ist Teil der W3C spec. It is also implemented by IE.

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

Ich finde gerade heraus, dass dies für mich nicht mehr notwendig ist. Ich dachte, es würde Probleme verursachen, aber nicht. Danke trotzdem. – Andres

+10

Gemäß der Spezifikation sollte dies nie Header entfernen. Es werden nur Werte angehängt. Selbst wenn Sie null oder "" übergeben, wird der ursprüngliche Wert nicht geändert. – Marco

+0

Eigentlich tat es. – madhairsilence

4

nie getan, aber in der Theorie könnten Sie versuchen:

xhr.setRequestHeader('Authorization', null); 

Es gibt auch eine nicht spezifizierte removeRequestHeader() Funktion in einigen Implementierungen, die Sie vielleicht auch ausprobieren möchten.

3

Wenn ich Jquery-Datei-Upload verwenden, und Wanner entfernen es in options Methode, auf null oder '' nicht funktioniert für mich, die ich benutze:

req.setRequestHeader("Authorization");

Es funktioniert für mich .

+0

Wie verwendet 'setRequestHeader' den Header' Authorization' für Sie? Ich verstehe es nicht. was ist 'req' überhaupt? – vsync

+0

@vsync der XMLHttpRequest (xhr) – Fancyoung

0

Adams Antwort funktionierte nicht für mich. Folgendes tat jedoch:

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

Hinweis, zweiter Parameter ist eine Zeichenfolge, die ein Leerzeichen anstelle von leerem Leerzeichen enthält. Der Header wird nicht vollständig entfernt, sondern auf den leeren String gesetzt, was für einige Fälle ausreichen könnte.