将标头添加到 http 请求

Posted

技术标签:

【中文标题】将标头添加到 http 请求【英文标题】:Add header to http request 【发布时间】:2017-02-15 10:56:07 【问题描述】:

我在这里的第一篇文章。 我正在使用 droidscript,我必须包含一个包含特定用户和密码的标头才能检索令牌。我遇到了麻烦,因为我不知道在哪里包含这些标题。

这是我正在使用的代码:

function btn_OnTouch()

    var url = "myurl";
    SendRequest(url);



//Send an http get request.

function SendRequest(url)

    var httpRequest = new XMLHttpRequest();

    httpRequest.onreadystatechange = function() 
        HandleReply(httpRequest);
    ;

    httpRequest.open("GET", url, true);

    httpRequest.send(null);

    app.ShowProgress("Loading...");



//Handle the servers reply (a json object).

function HandleReply(httpRequest)

    if (httpRequest.readyState == 4)

        //If we got a valid response.

        if (httpRequest.status == 200)
            txt.SetText("Response: " + httpRequest.status + httpRequest.responseText);
        

        //An error occurred
        else
            txt.SetText("Error: " + httpRequest.status + httpRequest.responseText);

    

    app.HideProgress();


他们告诉我我可能应该包含这样的标题,但我不知道将它们放在我的代码中的什么位置。

httpRequest.setRequestHeader(“username”, “myuser”);

httpRequest.setRequestHeader(“password”, “mypass”);

【问题讨论】:

httpRequest.open("GET", url, true); in SendRequest( url ) 之前尝试一下 没用。它给了我这个错误:脚本错误:无法在“XMLHttpRequest”上执行“setRequestHeader”:必须打开对象的状态。 好吧,正如它所说的“对象的状态必须是打开的”,显然应该在发送请求之前设置标头,那么如何将代码放在open()之后和send()之前。 那么它必须在httpRequest.open("GET", url, true);之后但在httpRequest.send(null);之前 检索此错误:错误 0 【参考方案1】:

你需要在调用 open 方法之后这样做:-

httpRequest.open("GET", url, true);
httpRequest.setRequestHeader("username", "myuser");
httpRequest.setRequestHeader("password", "mypass");
httpRequest.send(null);

【讨论】:

以上是关于将标头添加到 http 请求的主要内容,如果未能解决你的问题,请参考以下文章

将标头添加到(HTTP 请求)文件下载

Guzzle HTTP - 将授权标头直接添加到请求中

如何将授权标头添加到 Angular http 请求?

如何将 JSON 字符串添加到 HTTP 请求标头?

如何将承载令牌添加到 HTTP 请求的标头?

将单个 HTTP 标头的多个值添加到请求或响应的标准