编辑:代码是打字稿,但与JS非常相似,所以我希望这不是问题;)
我尝试发出HTTPS请求,但在错误事件中超时后才会“读取ECONNRESET”。
要对帖子数据进行编码,我使用require('querystring');
并且工作正常,数据正是浏览器发送的内容。
var postData = querystring.stringify(data);
var postOptions = {
host: 'my.host.com',
port: 443,
path: '/openid/loginsubmit',
method: 'POST',
headers: {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'en-US,en;q=0.5',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0',
'Content-Type': 'application/x-www-form-urlencoded',
'Referer':' https://my.host.com/openid/login',
'Content-Length': postData.length // 157 in web
},
rejectUnauthorized: false
};
我带了我跟Fiddler跟踪的所有标题,以确保没有理由在服务器端拒绝我的请求。
然后我开始尝试使用以下方式发送请求:
var resString = '';
var postReq:any = https.request(postOptions, (httpRes:any) => {
console.log("statusCode: ", httpRes.statusCode);
console.log("headers: ", httpRes.headers);
httpRes.on('data', function (chunk) {
resString += chunk;
console.log('Response: ' + chunk);
});
httpRes.on('end', function () {
res.send(resString);
});
});
postReq.on('error', (err) => {
console.error('ERROR failed to login into website');
res.send(err.message);
});
postReq.write(postData); // even tried to add 'utf8' as second parameter
postReq.end();
现在我得到的是在消息read ECONNRESET
如果有人可以帮助我提供一个示例(可能在某个任意的https主机上)https发布请求有效,那将会有很大帮助。
还是有一些错误吗?也许我必须在某处提供一些服务器证书来加密我的帖子数据?