Javascript 获取节点/Express中登录页面以外的信息无效
这里有点奇怪。我正在构建一个后端和前端,它与控制某些硬件的第三方RESTFUL API进行通信。第三方api作为Web服务器安装在您的本地系统上,因此要发出HTTP请求,您可以将它们定向到localhost 主要问题是,在一些更改之后,必须通过登录Web服务器并单击“更新硬件”按钮来更新硬件,这会将所有最新的更改推送到实际的硬件上。不幸的是,API没有任何用于执行此操作的默认调用/命令 在浏览完这些文件后,我发现我可以通过简单的GET请求刷新一扇门tohttp://localhost/IntelliM/DoorsConfig/DownloadChangeForAllDoors.ashx 如果我把它输入浏览器,它会完美地更新硬件 问题是访问此页面需要登录,我一直试图通过此代码实现登录Javascript 获取节点/Express中登录页面以外的信息无效,javascript,node.js,http,express,Javascript,Node.js,Http,Express,这里有点奇怪。我正在构建一个后端和前端,它与控制某些硬件的第三方RESTFUL API进行通信。第三方api作为Web服务器安装在您的本地系统上,因此要发出HTTP请求,您可以将它们定向到localhost 主要问题是,在一些更改之后,必须通过登录Web服务器并单击“更新硬件”按钮来更新硬件,这会将所有最新的更改推送到实际的硬件上。不幸的是,API没有任何用于执行此操作的默认调用/命令 在浏览完这些文件后,我发现我可以通过简单的GET请求刷新一扇门tohttp://localhost/Intel
/* update door */
router.get('/updatedoor', function (req, res) {
request.post({
headers: {'content-type' : 'application/x-www-form-urlencoded'},
url: "http://localhost/IntelliM/login/index.ashx?",
body: "password=admin&username=admin"
}, function(error, response, body){
//Here is where I would make a GET request to doorupdate mentioned earlier
console.log(body);
});
});
当我记录正文或将其显示在页面上时,我会得到一个很大的正文响应,除了这两行之外,大多数正文都不重要:
Username: <input type="text" id="username" name="username" value="" />
Password: <input type="password" id="password" name="password" value="admin" />
看起来这个页面甚至没有得到我的用户名值,只是返回了我只需要输入密码就可以得到的页面主体
我试图让它记录我登录后通常看到的页面,因为这样我就知道登录成功了,然后我就可以对我需要的页面发出get请求
编辑:对于上下文,硬件是门控制器,必须推动的更改是添加可以访问门的用户
编辑全文:
<form id="loginForm" action="/IntelliM/login/login.ashx" method="post">
<fieldset id="loginFieldSet">
<legend id="loginFieldSetLegend">Authentication</legend>
<div id="loginFieldSetFields">
<p id="loginFieldSetUsername">Username: <input type="text" id="username" name="username" value="" /></p>
<p id="loginFieldSetPassword">Password: <input type="password" id="password" name="password" value="admin" /></p> <input type="hidden" id="ReturnUrl" name="ReturnUrl" value="/IntelliM/default.aspx" />
<p id="loginFieldSetButton"><input type="submit" value="Login" id="submit" /></p>
</div>
</fieldset>
<div id="loginFormRegister">Your system is licensed for Intelli-M Access</div>
将url更改为/IntelliM/login/login.ashx,并将更改正文添加到
form: {password="admin", username="admin", ReturnURL:"/IntelliM/default.aspx"}
尝试以这种方式添加,而不是以正文形式添加:{password=admin,username=admin}如果有效,请告诉我无效。我把它改成了{password:admin,username:admin},我只得到了一个TypeError:第一个参数必须是字符串或缓冲区。如果我改成了{password=admin,username=admin},它就不起作用了。你把body改成form了吗?对不起,误解了,把body改成form,值是{password:admin,username:admin}我仍然只收到密码值。用户名还是空的