Mam aplikację, która jest całkiem normalną aplikacją Express - prosta logika serwera, widoki, mnóstwo JS po stronie klienta. Muszę wykonać wiele żądań AJAX. Niektóre z nich muszą być zabezpieczone protokołem HTTPS (niektóre nie muszą).Node.JS, Express i Heroku - jak radzić sobie z HTTP i HTTPS?
Mój serwer powinien działać zarówno z HTTP, jak i HTTPS. Powinien również działać zarówno na komputerze lokalnym (uruchamianym z nodemonem normalnie), jak i na Heroku.
Z tego co rozumiem, Heroku daje ci pojedynczy port (process.env.PORT), który możesz słuchać i obsługuje wszystkie żądania za pośrednictwem serwera proxy (tak, aplikacja słucha tego portu i nie zawraca sobie głowy proto - prawda?)
Czy mam rację - powinienem mieć jakiś inny kod dla maszyny dev i Heroku?
Jak
...
app = express()
...
if process.env.NODE_ENV == 'production'
app.listen(process.env.PORT)
else
https = require('https')
http = require('http')
http.createServer(app).listen(5080) # some local port
options = {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem') # my self-signed files
}
https.createServer(options, app).listen(5443) # some different local port
Czy to właściwy sposób na radzenie sobie z tym?
Szybkie pytanie - czy możemy uzyskać hosta takiego jak "return res.redirect (" https: // "+ req.headers.host + req.url);" zamiast tego z konfiguracji? –
Prawdopodobnie tak, ale po co - tylko po to, aby wyeliminować nadmiarowość? otrzymujesz nagłówki z przeglądarki. uzyskanie ważnych wartości z konfiguracji (lub zmiennej env) wygląda na bardziej niezawodną opcję dla mnie – Guard