おそらく私は 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://」と入力する必要があります。
SOを見回すと、ミドルウェアの使用を提案する同様の質問がいくつか見られました。
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
にもリダイレクトされません (上記と同じエラーが発生します) 。また、HTTPS 用にポート 8080 を使用する必要があるため、明らかに機能しないlocalhost:8081
リダイレクト先に移動します。https://localhost:8081
ここで私が間違っていることについてのアイデアはありますか? デフォルトでHTTPSですべてを実行したいだけです。