2016-06-26 7 views
1

Ich baue eine Node.js Anwendung auf OpenShift gehostet. Ich versuche, alle Besuche auf die https-Version der Website umzuleiten.Openshift Redirect zu https auf Knoten

Ich habe versucht, eine .htaccess-Datei im öffentlichen Verzeichnis hinzuzufügen, wie es in einigen anderen Posts vorgeschlagen wurde, aber es macht keinen Unterschied.

unten ist meine .htaccess-Datei:

RewriteEngine on 
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L] 

Ich benutze AngularJS und ui-Router Navigation auf der Website für die Handhabung. Durch die Implementierung des folgenden Codes kann ich die Umleitung zu https erreichen, aber ich denke, dies sollte auf der Serverseite behandelt werden.

if(window.location.protocol != 'https'){ 
     $window.location.href = $location.absUrl().replace('http', 'https'); 
    } 

Antwort

1

Die .HTACCESS kann mit Apache-basierten Kassetten verwendet werden. Überprüfen Sie this FAQ answer; Es beschreibt, wie Sie mit Express zu HTTPS umleiten.

+0

Danke, das ist genau das, was ich brauchte. – Viktor

0

Wenn Sie mit Express.js in Ihrer Knoten-Anwendung können Sie req.secure verwenden um zu überprüfen, ob die Anforderung durch https kommt. (reference).

So können Sie Middleware schreiben, die Sie zu all Ihren Routen hinzufügen können, die überprüfen, ob die Anfrage über https kommt und umleiten, wenn es durch http kommt.

Zum Beispiel:

https-redirect.js Datei:

exports.httpsRedirect = function (req, res, next) { 
    if (req.secure) { 
    next(); 
    } 
    else { 
    res.redirect('https://' + req.headers.host + req.path); 
    } 
}; 

app.js Datei (oder was auch immer Sie Routen zu definieren, verwenden):

var express = require('express'); 
var app = express(); 

var https = require('./https-redirect'); 

app.all('*', https.httpsRedirect); 

Jetzt werden alle Ihre Routen zuerst die https.httpsRedirect Middleware ausführen und bei Bedarf erneut auf https umleiten.