如何使用javascript从Ubiquity AirMax或Airibre radio发出HTTP请求以获取status.cgi json数据?

如何使用javascript从Ubiquity AirMax或Airibre radio发出HTTP请求以获取status.cgi json数据?,javascript,node.js,http-headers,Javascript,Node.js,Http Headers,我的目标是使用HTTP请求从UBNT无线电()获取状态数据。web界面url的格式为。发出请求需要身份验证cookie。使用从现有web界面复制的cookie,我能够成功地检索数据 这是我当前使用Meteor框架的代码 radioHost = "http://192.168.0.120"; HTTP.call("POST", radioHost + "/login.cgi", { headers: { "Content-Type": "multip

我的目标是使用HTTP请求从UBNT无线电()获取状态数据。web界面url的格式为。发出请求需要身份验证cookie。使用从现有web界面复制的cookie,我能够成功地检索数据

这是我当前使用Meteor框架的代码

radioHost = "http://192.168.0.120";
HTTP.call("POST", radioHost + "/login.cgi",
    {
        headers: {
            "Content-Type": "multipart/form-data"
        },
        data: {
            username: "ubnt",
            password: "ubnt"
        }
    }, (err, res) = > {
    if(err) return console.log(err);
    var cookie = res.headers["set-cookie"][0];

    HTTP.call("GET", radioHost + "/status.cgi", {
        headers: {
            cookie
        }
    }, (err, res) = > {
        if(err) return console.log("Error");
            console.log(res);
    })
})
上述代码成功地实现了这两个请求。但是,服务器使用错误的令牌(“设置cookie”字符串)响应第一个。使用现有web框架中的cookie,响应是正确的

这里有一个用Python编写的库,我相信它也做了类似的事情

我相信我的问题在于HTTP请求和web api与用户名和密码不配合


提前感谢您的帮助。

不建议直接向url发送
请求。当你打开一个浏览器,你只是不直接登录。获取页面,然后提交/登录

不模拟此行为可能会影响某些站点,具体取决于服务器的工作方式

因此,如果总是想像真正的用户/浏览器那样看待模拟,请先发出
GET
请求,然后发出
POST


还可以从第一个
GET
请求捕获任何cookie,然后将其传递到下一个只有您有权访问的本地服务器与
ubnt.com
有什么关系。。。还有,
radioHost
的值是多少。。您提到了三个可能不同的服务器,它们之间没有明显的联系<代码>故障令牌
-以何种方式出现故障?它是否存在?192.168.0.120与我的本地网络无关。Ubnt是我正在使用的收音机的硬件供应商。令牌(cookie变量)是由收音机提供的32位字符串,格式类似于“AIROS_DC9FDB7841FC=8f82848791237ce68cd4b5230e9354c”。它存在,但与web框架中的相同令牌不匹配。您每次登录时都会得到不同的令牌,不是吗?是的。但是,提供的令牌无法访问数据。在这种情况下,我将首先在
login.cgi
上发出GET请求,获取任何cookie(如果提供),然后发布到
login.cgi