也许我不了解SSL / HTTPS的工作方式(可能),但SalesForce的API在回调中需要https连接,所以我试图了解它。
以下是我在app.js
var http = require('http');
var https = require('https');
var privateKey = fs.readFileSync('private/key.pem', 'utf8');
var certificate = fs.readFileSync('private/cert.pem', 'utf8');
var credentials = {key: privateKey, cert: certificate};
var port = process.env.PORT || 8080;
http.createServer(app).listen(8081);
https.createServer(credentials, app).listen(port);
我正在使用localhost:8080
,localhost:8080/profile
等访问我的本地开发环境。
当我在地址栏中输入此内容时,出现此错误:
相反,我必须在它前面明确键入“https://”,然后才能工作。
从环顾四周来看,我发现了一些类似的问题,建议使用中间件:
app.use(function(req, res, next) {
console.log(req.secure);
if(!req.secure) {
var url = ['https://', req.get('Host'), req.url].join('')
console.log(url);
return res.redirect(url);
}
next();
});
然而,这不起作用;如果我去localhost:8080
我没有被重定向到任何地方(我得到与上面相同的错误),如果我到localhost:8081
我被重定向到https://localhost:8081
这显然不起作用因为我们需要在端口8080上使用HTTPS。
关于我在这里做错了什么的想法?我只想默认在HTTPS上运行整个事情。