2010-03-17 39 views
13

是否有可能,发送一个HTTP消息之前,使用JavaScript /的XmlHttpRequest删除一些特定的HTTP标头?如何删除HTTP特定的头文件在Javascript

我使用的是专用的浏览器,所以没有办法用浏览器特定的解决方案来做到这一点。

例如,我想删除页眉 '授权' 之前,发送消息

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

假设您的浏览器支持它,您可以使用XmlHttpRequest对象的setRequestHeader方法,它是W3C spec的一部分。 It is also implemented by IE

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

我只是想出现在,这是没有我存在的必要。我认为这是造成问题,但不是。不管怎么说,还是要谢谢你。 – Andres 2010-03-18 13:44:02

+10

根据规范,这不应该删除标题。它只会追加值。所以即使你传递null或“”它也不会改变原来的值。 – Marco 2011-08-12 23:02:17

+0

其实它的确如此。 – madhairsilence 2014-10-07 11:00:32

4

从未做过,但在理论上,你可以尝试:

xhr.setRequestHeader('Authorization', null); 

在某些实现中还有一个未指定的removeRequestHeader()函数,您可能也想尝试一下。

3

当我使用jQuery的文件上传,和华纳删除它在options方法,设置为null''不是为我工作,我用:

req.setRequestHeader("Authorization");

这对我的作品。

+0

如何使用'setRequestHeader'为您删除'Authorization'标题?我不明白。无论如何,“req”是什么? – vsync 2016-11-05 21:14:27

+0

@vsync XMLHttpRequest(xhr) – Fancyoung 2016-11-07 01:21:25

0

亚当的回答并没有为我工作。但是,下面做了:

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

注意,第二个参数是一个包含空格而不是空格的字符串。 它不会完全删除头,但其设置为空字符串,这可能是不够的情况。