TypescriptでAngular 2アプリを使用しています。サーバはlighweight NancyFX(C#)であり、未知のapi呼び出しが行われた場合に "/"へのリダイレクトで応答するように設定されています。角2:新しいタブで開き、リクエストを保存するURL
私たちは何をしようとしていますか: アプリケーションが開始され、ユーザーがログインしています。今度は、「新しいタブでリンクを開く」またはCTRL +クリックを使用して2番目のタブを開きます。
アプリは、新しい種類のルートURL(例:「/ order/5」)で再び新しいタブで開きます。サーバーは "/"(基本角度ルート)へのリダイレクトで応答し、アプリケーションは起動し、すべての角度のものを読み込み、ベースルートにリダイレクトされ、ユーザーにトークンが利用可能かどうかをチェックします。元のリクエストURL
問題:サーバーが「/」にリダイレクトするため、元のURLリクエスト(「/ order/5」)はなくなりました。
リダイレクトする場所をクライアントが知るようにURLを保存する方法はありますか(localstorageなど)
私は私が見る唯一の方法は、サーバーコードでURLを保存することであるが、これは各ブラウザのために行う必要があります。..キー/イベントをクリックしますが、これはすべての少しハックですが読んについて
を何かを読みますセッションを個別にまたはいくつかの種類のwindow.historyと比較しますが、これが新しいセッションか単なるページリフレッシュかどうかをどのように知るべきですか?
デフォルトのPathLocationStrategyを使用します。
誰かがアイデアを持っているのですか、それとも不可能ですか?
UPDATE: マイナンシーホスティングモジュール
public HostingModule()
{
Get["/"] = o => Response.AsFile(Path.Combine(Response.RootPath, "index.html"));
Get["/{ignored*}", ctx => ctx.Request.Headers.Accept.Any(x => x.Item1 == "text/html")] = o =>
{
return Response.AsFile(Path.Combine(Response.RootPath, "index.html"));
};
}
だから、text/htmlのヘッダーを持つすべての要求が受け入れられ、デフォルトのindex.html.Thisを返すべきであるが
を動作しますが:問題は、すべてのことですindex.html内のファイルは、起点パスに関連して要求されます:
最初のリクエスト: "foo.com/order/5" - > response index.html - >その後、クライアントはindex.html ->にあるすべてのスクリプトの読み込みを開始しますが、リクエストはfoo.com/ですすべてのスクリプトは次のようにロードしようとしています: foo.com/script1.jsの代わりにfoo.com/order/script1.js
- >私は404エラーの混乱しか受けません。それは何度も何度もindex.htmlをするためにクライアントをリダイレクトする404エラーのために私のリダイレクトStatusCodehandler ...助けを
しかし感謝を保つ
"/"にリダイレクトしない –
これは、アプリケーションがロードされる前にルートがナンシーで明示的に定義されていない場合、404エラーに終わるだけです。 –