我真的越来越疯狂地在网络和stackoverflow上寻找这个。其他关于这个主题的帖子谈论的是http请求,而不是https.com。
我正在用node.js编写服务器端代码,需要向另一个网站发出https请求才能登录
如果我在chrome中使用postman工具,尝试使用https://user:pass@webstudenti.unica.it/esse3/auth/Logon.do,一切正常,我登录。
如果我在节点中使用请求库,我无法登录,并且我会得到一个带有自定义错误消息的页面,该消息是关于我在获取/发送数据时出错的。
也许我设置传递给请求的选项是错误的。
var request = require('request');
var cheerio = require('cheerio');
var user = 'xxx';
var pass = 'yyy';
var options = {
url : 'https://webstudenti.unica.it',
path : '/esse3/auth/Logon.do',
method : 'GET',
port: 443,
authorization : {
username: user,
password: pass
}
}
request( options, function(err, res, html){
if(err){
console.log(err)
return
}
console.log(html)
var $ = cheerio.load(html)
var c = $('head title').text();
console.log(c);
})
5条答案
按热度按时间6qftjkof1#
您没有正确设置http auth选项(即
authorization
应该改为auth
)。kjthegm62#
http/https应该不会对验证造成影响。您的user/pass很可能需要base64编码。请尝试
请参阅:https://security.stackexchange.com/questions/29916/why-does-http-basic-authentication-encode-the-username-and-password-with-base64
p4tfgftt3#
不要使用npm包
request
,因为它已过时,请改用节点本机https
a64a0gku4#
有了更新的版本,我可以用基本的身份验证进行https调用。
ffvjumwh5#
使用Node.js的URL module构建URL对象。如果使用自签名证书调用服务器,则需要httpsAgent模块。