2016-01-18 10 views
12

Ho un'app di nodo in esecuzione correttamente su Heroku. Ho acquistato un certificato SSL Expedited e tutto funziona correttamente. Vado a https ... e ricevo una barra verde completa che dimostra che il sito viene servito su httpsForza la mia app heroku per utilizzare SSL (https)

Tuttavia, lo standard http non SSL è ancora disponibile. Come posso forzare la pubblicazione dell'app su https? Grazie

risposta

3

È necessario aggiungere all'app Node.js il codice per reindirizzare la richiesta alla versione HTTPS se la richiesta proviene da HTTP.

A seconda del quadro o gli strumenti utilizzati, l'idea è semplice:

  • di controllo del sistema di richiesta
  • se http, reindirizzare a https passando lungo la stessa richiesta uri e di query
15

Su Heroku, è leggermente complicato determinare il fatto che la richiesta sia arrivata tramite http. https è gestito da un layer di routing heroku e passa lungo la richiesta all'app nodo su http).

Questo post mi ha fatto scollarsi http://jaketrent.com/post/https-redirect-node-heroku/

11

C'è anche il modulo NPM heroku-ssl-redirect vi aiuta a trattare con esso

+0

Ha funzionato come un fascino –

0

È possibile reindirizzare le richieste HTTP a HTTPS nello strato di infrastrutture troppo, che non richiede modifiche alla vostra applicazione.

Il Edge CDN addon offre un'opzione "reindirizza HTTP a HTTPS".

Posiziona il CDN AWS ​​CloudFront davanti all'app che gestisce il reindirizzamento.

Il router Heroku non ha questa caratteristica.

0

Per chiunque venendo a questo post, ho avuto questo problema e ha scoperto che ho avuto il codice in questo ordine, che è stato avvitare le cose:

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(); 
    } 
}); 

Una volta ho spostato l'express.static ('costruire ') di seguito che invia il metodo app.use tutto ha funzionato!