Forçar a minha aplicação heroku a usar SSL (https)

Tenho uma aplicação de nódulos a correr com sucesso no Heroku. Comprei um certificado SSL expedido e tudo funciona bem. Eu vou aos https... e obter uma 'barra verde' completa que prove que o local está a ser servido por https

no entanto, o http não-SSL padrão ainda está disponível também. Como posso forçar a aplicação a servir sobre https? Obrigado.

Author: Simone Carletti, 2016-01-18

6 answers

Tens de adicionar ao nó.js app the code to redirect the request to the HTTPS version if the request comes from HTTP.

Dependendo da estrutura ou das ferramentas que usa, a ideia é simples:

  • verifique o sistema de Pedidos
  • Se http, redireccione para https passando ao longo da mesma requisição uri e consulta
 2
Author: Simone Carletti, 2016-01-18 19:20:42
Em Heroku, é um pouco complicado determinar o facto de o pedido ter chegado por http. https é tratado em uma camada de roteamento heroku e passa ao longo do pedido para o aplicativo de nó em http). Este post libertou-me. http://jaketrent.com/post/https-redirect-node-heroku/
 20
Author: Boon, 2016-03-21 19:57:54
Também há o módulo NPM heroku-ssl-redirect a ajudar-te a lidar com isso
 14
Author: Dmitry Yudakov, 2017-04-05 09:37:20

Se você está desenvolvendo um creat-react-app E aconteceu de usar create-react-app-buildpack para se deslocar para Heroku (eu sou preguiçoso...)

Pode especificar o seguinte no seu ficheiro static.json

{
  "https_only": true
}

Https://github.com/mars/create-react-app-buildpack#user-content-https-only

 3
Author: Ryan Chu, 2018-04-01 07:47:58

Também pode redireccionar os pedidos HTTP para HTTPS na camada de infra-estrutura, não necessitando de alterações na sua aplicação.

A Opção Edge CDN addon oferece uma opção" redireccionar HTTP para HTTPS".

Coloca o AWS CloudFront CDN à frente da sua aplicação, que lida com o redireccionamento. O router de Heroku não tem esta característica.
 2
Author: Noah Zoschke, 2018-03-06 15:11:46
Para qualquer um que viesse a este post, eu estava tendo este problema e descobri que eu tinha um código nesta ordem, que estava estragando as coisas:
app.use(express.static('build'));
app.use((req, res, next) => {
  if (req.header('x-forwarded-proto') !== 'https') {
    res.redirect(`https://${req.header('host')}${req.url}`)
  } else {
    next();
  }
});
Uma vez movi o expresso.estática ('build') por baixo da aplicação send.use o método tudo funcionou!
 2
Author: bentedder, 2018-03-09 11:43:19