2016-04-22 15 views
0

Es gibt etwas, mit dem ich Schwierigkeiten habe, wenn ich Seiten (in meinem Fall, nodejs) liefere.Node.js: relative und absolute Pfade

Lassen Sie uns sagen, ich habe die folgende URL: http://localhost:80, die eine einfache HTML-Seite dient, aber Sie müssen angemeldet sein, so oder so, wie Sie auf eine Anmeldeseite umgeleitet werden (http://localhost:80/login).

Das ist einfach, und alles funktioniert gut. Lassen Sie uns jetzt sagen, dass ich eine andere URL http://otherdoamin.com/internal/back haben, die auf meinen Server umleitet auf dem Port lauscht 80.

Ich habe Probleme zu finden, was ist der beste Weg, um meine Server zu verwalten sowohl URL zu arbeiten.

Hier ist ein Codebeispiel nur die Logik zeigen:

function checkAuth(req, res, next) { 
//if user isn't logged, redirect to login 
} 

app.get('/login', function(req, res) { 
    //if user is logged, redirect to base path (/) which serves an html page 
    //else 
    //display login.html page 
}) 

app.get('/', checkAuth, function (req, res) { 
    res.sendFile(__dirname + '/views/index.html'); 
}); 

ist jetzt Lassen Sie sagen, dass ich den folgenden Fall haben:

ich http://localhost:80 gehen, aber ich nicht angemeldet bin, bin ich umgeleitet die Anmeldeseite (http://localhost:80/login). Nach dem Einloggen werde ich zurück zu http://localhost:80 weitergeleitet.

Aber wenn ich den folgenden Fall mit meiner anderen URL (http://otherdoamin.com/internal/back) mache, werde ich Probleme mit den Pfaden haben: Wenn ich absolute Pfade habe, wird die Umleitung zur Anmeldung funktionieren, aber nach dem Einloggen werde ich haben eine Umleitung zu http://otherdoamin.com/ anstelle von http://otherdoamin.com/internal/back/, was offensichtlich ist.

+0

Versuchen Sie zu behaupten, dass ihre URL http://otherdoamin.com/internal/back bleibt? Wie sollten sie sich einloggen können und die andere Domain immer noch in ihrer URL-Leiste sehen? Wenn es sich lediglich um eine reine Weiterleitung handelt, ist dies so einfach wie das Festlegen der richtigen URL-Werte in Ihrem DNS. – Devnetics

+0

Ja, in der Tat, ich habe keinen Zugang dazu (ich bin nicht derjenige, der die Umleitung macht), aber ist das der einzige Weg, um das zu erreichen? – krakig

+0

Die einzige Möglichkeit, wie Ihr Server Anfragen von otherdomain empfängt, ist eines von zwei Szenarien. A) Es ist ein URL-Umleitungsdatensatz in den DNS vorhanden. B) otherdomain ist nur ein Reverseproxy, der auf deine URL verweist. – Devnetics

Antwort

1

Option 1:

als Basis-URL in der Path-Definition Reverse Proxy Set otherdomain.com/internal/back.

Option 2:

Shop der vollständig qualifizierte ursprüngliche Anfrage url:

var fullUrl = req.protocol + '://' + req.get('host') + req.originalUrl;

Und dann verwenden, zu umleiten;