如何使用javascript从Ubiquity AirMax或Airibre radio发出HTTP请求以获取status.cgi json数据?
我的目标是使用HTTP请求从UBNT无线电()获取状态数据。web界面url的格式为。发出请求需要身份验证cookie。使用从现有web界面复制的cookie,我能够成功地检索数据 这是我当前使用Meteor框架的代码如何使用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
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