Force SSL mit expressjs 3
Bin ich mit einem node.js express-3-server ohne Proxys und über SSL.
Ich versuche, herauszufinden, wie es zu zwingen, alle verbindungen gehen über https.
Google-Suche zeigt mir dies:
https://groups.google.com/forum/#!Thema/express-js/Bm6yozgoDSY
Gibt es derzeit keine Möglichkeit, zu erzwingen, https umleitet, obwohl das scheint
ein bisschen wie eine seltsame work-around. Wir haben eine https-only-app und wir
nur eine einfache ~4 Zeilen-Knoten http-server, der leitet, nichts
fancy
Das ist, was ich brauche, aber er sagt nicht, was diese 4 Zeilen sind.
Wie tun wir das? Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nicht wirklich verstehen, den Punkt in der Start von zwei Servern, wenn nur eine kann den job perfekt. Zum Beispiel, indem eine einfache middleware, die in Ihrer server-Datei:
Dieser leitet alle nicht-sichere Anforderung auf die entsprechende HTTPS-Seite. Zum Beispiel
http://example.com/
zuhttps://example.com/
undhttp://example.com/foo?bar=woo
zuhttps://example.com/foo?bar=woo
. Dies ist definitiv das Verhalten, das ich erwarten würde. Vielleicht sollten Sie filtern diese durch den host, so dass es leitet nur auf domains, für die Sie selbst installiert und ein richtiges Zertifikat.Wenn Ihre app ausgeführt wird, der sich hinter einem server wie Nginx, können Sie die Konfigurations-parameter
app.set('trust proxy', true)
. Oder, noch besser, machen Sie Nginx tun, die Umleitung selbst, die effizienter sein als jede Node.js app.Edit: Nach meinen benchmarks
join
ist ein wenig schneller als+
für die Verkettung von strings. Nichts Dramatisches, aber jeder Sieg ist ein Sieg...baseUrl
statturl
. Die Zeile sollte lauten:return res.redirect(['https://', req.get('Host'), req.baseUrl].join(''));
Ich hatte ein ähnliches problem und die redirect-Lösung ist nicht geeignet für mich, denn im Grunde möchte ich, um loszuwerden, der browser ist unsicher Warnung,
Also statt der Umleitung jede Nachricht, die ich gemacht habe:
});
app1.listen(80, function(){'redirect-server läuft auf port 80'})
und in der redirect.html ist nur eine Umleitung der html-Datei:
Natürlich, dies funktioniert nicht für komplizierte Fälle, wenn Sie umleiten möchten allen routings, aber für mich, ich will nur umleiten, meine homepage zu meiner homepage https und loszuwerden, der browser ist unsicher Warnung. Hoffe, dies hilft jemand!
Sollten Sie erstellen einen zweiten server lauscht auf 80 und leiten Sie mit einem 301-header auf Ihrem https-server: