0

也许我不了解 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

当我在地址栏中输入此内容时,我收到此错误:

http://i.imgur.com/Hlz0dR5.png

相反,我必须在它前面显式输入“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 上运行整个事情。

4

0 回答 0