2010-03-17 1 views
13

Возможно ли до отправки http-сообщения удалить некоторые определенные заголовки HTTP, используя javascript/XmlHttpRequest?Как удалить HTTP-заголовки в Javascript

Я пользуюсь проприетарным браузером, поэтому нет способа сделать это, используя конкретное решение для браузера.

Например, я хочу, чтобы удалить заголовок 'Authorization' перед отправить сообщение

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 

С уважением

ответ

14

Вы можете использовать метод setRequestHeader объекта XmlHttpRequest, предполагая, что ваш браузер поддерживает его, Он является частью W3C spec. It is also implemented by IE.

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

Теперь я просто выясню, что это больше не нужно для меня. Я думал, что это вызывает проблемы, но нет. Спасибо, в любом случае. – Andres

+10

Согласно спецификации, это никогда не должно удалять заголовки. Он будет только добавлять значения. Поэтому, даже если вы передадите null или «», это не изменит первоначальное значение. – Marco

+0

На самом деле все было. – madhairsilence

4

никогда не делал этого, но в теории вы могли бы попробовать:

xhr.setRequestHeader('Authorization', null); 

В некоторых реализациях также есть неуказанная функция removeRequestHeader(), вы можете попробовать попробовать.

3

Когда я использую JQuery-файл-загрузки, и Wanner удалить его в options метод, установите null или '' не работает для меня, я использую:

req.setRequestHeader("Authorization");

Это работает для меня ,

+0

Как с помощью 'setRequestHeader' удаляет для вас заголовок' Authorization'? Я не понимаю. что такое 'req'? – vsync

+0

@vsync XMLHttpRequest (xhr) – Fancyoung

0

Ответ Адама не работал для меня. Однако следующее:

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

уведомление, второй параметр - это строка, содержащая пробел вместо пустого пространства. Он полностью не удаляет заголовок, но устанавливает его в пустую строку, чего может быть достаточно для некоторых случаев.