也许我不了解 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 上运行整个事情。