2016-04-22 28 views
0

ページの提供時に問題があります(私の場合はnodejs)。Node.js:相対パスと絶対パス

私は以下のURLを持っているとします:http://localhost:80単純なhtmlページを提供しますが、ログインページ(http://localhost:80/login)にリダイレクトされた場合はログインする必要があります。

これは簡単ですが、すべて正常に動作します。 ここで、ポート80でリッスンしているサーバーにリダイレクトする別のURL http://otherdoamin.com/internal/backがあるとします。

私のサーバーを管理して、両方のURLを処理する最良の方法を見つけるのは難しいです。ここで

はちょうどロジックを示すためのサンプルコードです:私はhttp://localhost:80に行く

が、私がログインしていないです、私はにリダイレクトしています:

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

はのは、今私は、次のケースを持っているとしましょうログインページ(http://localhost:80/login)。ログイン後、http://localhost:80にリダイレクトされます。

しかし、私が他のURL(http://otherdoamin.com/internal/back)で次のような場合、私はパスに問題があります:絶対パスがあれば、ログインへのリダイレクトは機能しますが、ログイン後、 http://otherdoamin.com/internal/back/の代わりのhttp://otherdoamin.com/へのリダイレクトは明らかです。

+0

あなたは自分のURLがhttp://otherdoamin.com/internal/backのままであることを維持しようとしていますか?彼らはログインすることができ、まだ彼らのURLバーのotherdomainを見ることができるはずですか?純粋なリダイレクトの場合は、DNSに適切なURL値を設定するだけで簡単です。 – Devnetics

+0

本当に、私はそれにアクセスすることはできません(私はリダイレクトを行う人ではありません)が、それを達成するための唯一の方法でしょうか? – krakig

+0

サーバーがotherdomainからの要求を受信する唯一の方法は、2つのシナリオの1つです。 A)DNSにはURLリダイレクトレコードが存在します。 B)otherdomainはあなたのURLを指す逆プロキシです。 – Devnetics

答えて

1

オプション1:リバースプロキシのパス定義のベースURLとしてotherdomain.com/internal/back設定し

オプション2:

ストアの完全修飾元の要求のURL:その後、

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

そしてリダイレクトするためにそれを使用。

関連する問題