如何在Javascript中删除HTTP特定头?

21

是否有可能在使用javascript / XmlHttpRequest发送http消息之前,删除一些特定的http头?

我正在使用一种专有浏览器,因此无法使用特定于浏览器的解决方案。

例如,我想在发送消息之前删除标题“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

敬礼

4个回答

15
你可以使用XmlHttpRequest对象的setRequestHeader方法(假设浏览器支持),它是W3C规范的一部分。它也被IE实现了
var req = new XMLHttpRequest();
req.setRequestHeader("Authorization", "");

我刚刚意识到这对我已经不再必要了。我以为它会引起问题,但实际上没有。不管怎样,还是谢谢。 - Andres
19
根据规范,这个操作不应该删除头部信息,只会添加数值。因此,即使传递 null 或 "",它也不会改变原始数值。 - Marco
2
@madhairsilence - 对我来说不起作用。 - vsync
2
同意,这并没有真正“删除”头信息。根据头信息和服务器的不同,它可能会在服务器端失去其效果。这很可能不是你想要做的事情,在某些情况下,它甚至可能是灾难性的。 - randomsock
1
规格说明根据 https://developer.mozilla.org/en-US/docs/Web/API/Headers/delete 提供了 myHeaders.delete("Content-Type") 方法。 - xplorer1

5
当我使用jquery-file-upload时,想要在options方法中移除头信息,将其设置为null''对我无效。我改用以下方式:req.setRequestHeader("Authorization");

使用 setRequestHeader 如何为您删除 Authorization 标头?我不明白。那么 req 是什么呢? - vsync
@vsync XMLHttpRequest(XHR) - Fancyoung

3

虽然我没有亲自尝试过,但理论上你可以尝试:

xhr.setRequestHeader('Authorization', null);

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


-1

Adam的答案对我没用。不过,以下方法有效:

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

注意,第二个参数是一个包含空格而不是空白的字符串。它并没有完全删除头部,但将其设置为空字符串,这对某些情况可能已经足够。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接