【问题标题】:How to remove HTTP specific headers in Javascript如何在 Javascript 中删除 HTTP 特定的标头
【发布时间】:2011-01-28 16:23:07
【问题描述】:

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

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

例如,我想在发送消息之前删除标题“授权”

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

问候

【问题讨论】:

    标签: javascript ajax http-headers xmlhttprequest


    【解决方案1】:

    当我使用 jquery-file-upload 并想删除 options 方法中的标头时,将其设置为 null'' 对我不起作用。我改用这个:

    req.setRequestHeader("Authorization");

    【讨论】:

    • 如何使用setRequestHeader 为您删除Authorization 标头?我不明白。 req 到底是什么?
    • @vsync XMLHttpRequest (xhr)
    【解决方案2】:

    亚当的回答对我不起作用。但是,以下操作:

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

    注意,第二个参数是一个包含空格而不是空格的字符串。 它不会完全删除标题,而是将其设置为空字符串,这在某些情况下可能就足够了。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 我现在才发现这对我来说不再必要了。我认为这会引起问题,但不是。还是谢谢。
      • 根据规范,这不应该删除标题。它只会附加值。所以即使你传递 null 或 "" 也不会改变原来的值。
      • @madhairsilence - 不适合我
      • 同意,这完全“删除”了标题。它可能使其效果在服务器端无效,具体取决于标头和服务器。这很可能不是您想要做的,在某些情况下,它可能是灾难性的。
      • 规范根据developer.mozilla.org/en-US/docs/Web/API/Headers/delete提供myHeaders.delete("Content-Type")方法
      【解决方案4】:

      没做过,但理论上你可以试试:

      xhr.setRequestHeader('Authorization', null);
      

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

      【讨论】:

        猜你喜欢
        • 2011-06-01
        • 2011-05-26
        • 2011-12-15
        • 1970-01-01
        • 1970-01-01
        • 2010-09-21
        • 1970-01-01
        • 2010-12-28
        • 2017-12-27
        相关资源
        最近更新 更多