我想在我的Node.js服務器(Expressjs框架)上實現HTTPS。我有我的簽名證書和密鑰,以及用於測試/開發的自簽名證書/密鑰:ExpressJS節點HTTPS服務器上的Heroku錯誤H13
if(process.env.NODE_ENV == 'production'){
var app = module.exports = express.createServer({
key: fs.readFileSync('./ssl/nopass_server.key'),
cert: fs.readFileSync('./ssl/server.crt')
});
} else {
var app = module.exports = express.createServer({
key: fs.readFileSync('./ssl/self_signed/nopass_server.key'),
cert: fs.readFileSync('./ssl/self_signed/server.crt')
});
}
我也在Heroku上設置了SSL端點。一切工作正常localhost
,Endpoint似乎工作正常,但是當我在生產(在Heroku上)運行應用程序時,我得到一個H13應用程序錯誤。有趣(或不),如果我告訴快遞創建一個HTTP服務器,而不是:var app = module.exports = express.createServer()
它的工作原理,但後來Chrome投訴the page at https://mydomain.com ran insecure content from http://mydomain.com
。
我不能/不應該創建一個HTTPS服務器來快速生產嗎?如果我願意,是否還有額外的工作需要讓它在Heroku上工作(例如,我相信它可以用var port = process.env.PORT
設置正確的端口)?如果沒有,如果它不運行HTTPS服務器,那麼我如何提供「安全」內容,以便瀏覽器不會投訴?
我使用以下采取任何非HTTPS請求的護理:
app.get('*',function(req,res,next){
if(req.headers['x-forwarded-proto'] != 'https'){
res.redirect('https://mydomain.com'+req.url);
} else next();
});
這是目前位於正上方我的路線的休息,會是這樣的問題/這應該是別的地方?
我對https的使用經驗非常有限,所以我可能錯過了一些明顯的東西。
非https是,謝謝!事實證明,即使我在我的服務器上託管代碼,jquery-ui css中的某些內容導致了警告。從https谷歌cdn中取出它,卻擺脫了警告。 – hiattp 2012-07-15 18:57:11
在這裏簡潔地回答:http://stackoverflow.com/a/23894573/1882064 – arcseldon 2014-10-09 15:30:39