【发布时间】:2013-11-09 10:26:57
【问题描述】:
我正在使用 node.js 服务器,需要通过 http*s* 协议发布数据。
POST 被列为 http 协议,所以我想知道我是否走错了路。
无论如何,这是我处理 POST 的代码的 top。为了简洁起见,我没有包含 on('end') 函数,但它就在那里。
exports.login = function(req, res){
if(req.method == 'POST'){
var datastring = '';
req.on('data', function(data){
datastring += data;
console.log("getting data");
if(datastring.length > 1e6){
req.connection.destroy();
}
});
通过控制台日志,我可以确定正在发出请求,并且请求被识别为 POST,但从未调用过 req.on('data') 的函数。
我研究了 CONNECT 协议,但浏览器表单不支持此协议 - 如果您认为我不能通过 HTTPS 发送 POST 数据,请告知如何通过 CONNECT 发送数据
感谢您的帮助
编辑:这是发送请求的表单:
<form name="loginForm" action="login" method="POST" onsubmit="return checkForm()" class="separate-sections">
这里是抓取帖子的 node.js 代码
var app= express();
...
app.post('/login', route_login.login);
长话短说,POST 是否通过 HTTPS 工作?它似乎在这里不起作用。
【问题讨论】:
-
HTTPS 并不是那种协议。 TLS/SSL 与 HTTP 处于不同的级别。你也不应该担心。你给
req.end();打过电话吗? -
req.on('end') 在那里,我只是没有包括它。它永远不会被调用,如果他的 on('data') 函数也从未被调用过,这是可以预料的
-
不,不是
req.on("end")。当您发送 POST 数据时,您必须结束请求。致电req.end()。 -
我有几乎相同的代码,可以正常工作
-
我能想到的唯一可能性是添加一个
end处理程序和 .在data处理程序中也有这个:datastring += data;还有,你能告诉我们发送帖子请求的代码吗?
标签: javascript forms node.js post https