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
에서 정상적으로 작동하고 엔드 포인트가 제대로 작동하는 것 같지만 프로덕션 환경 (Heroku에서)에서 앱을 실행하면 H13 애플리케이션 오류가 발생합니다. 재미있게 (또는 안된다면) 내가 명시 적으로 HTTP 서버를 만들도록 말하면 : var app = module.exports = express.createServer()
이 작동하지만 크롬은 the page at https://mydomain.com ran insecure content from http://mydomain.com
이라고 불평합니다.
Express for Production에 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 google cdn에서 가져 오기 대신 경고가 표시됩니다. – hiattp
여기에 간략하게 답변 됨 : http://stackoverflow.com/a/23894573/1882064 – arcseldon