我想在我的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