13

私はこれを何度もやったような気がしますが、何が悪いのかを一生理解することはできません。

Default.aspx:

protected void Page_Load(object sender, EventArgs e)
{
   var r1 = Request.UrlReferrer; // null
   var r2 = Request.ServerVariables["HTTP_REFERRER"]; // null
}

SingleSignOn.aspx:

protected void Page_Load(object sender, EventArgs e)
{
   Response.Redirect("/");
}

URLに「/SingleSignOn.aspx」と入力すると、Default.aspxにリダイレクトされますが、リファラーはnullです。

ここで何が欠けていますか?

私がやろうとしていること(これは単純化された例です)は、どのページでも、次のことを行うためのJavaScriptがあります。

window.location.replace('~/SingleSignOn.aspx');

これは、ご想像のとおり、ユーザーにサインインして、ホームページにリダイレクトします。

しかし、そこから来たばかりの場合、SingleSignOn.aspxページにリダイレクトしないように、そのJavaScriptにロジックを組み込む必要があります。

リファラーは、実際のリンクユーザーのクリックによってのみ入力されますか?

どうすればこれを行うことができますか?URLにクエリ文字列を表示したくないので、クエリ文字列は使用しません。

私が考えることができる他の唯一のオプションはセッションです。

助けてください。=(

4

3 に答える 3

10

だから、私は私の答えを見つけるためにいくつかのグーグルをしました。

Stack Overflowのおかげではありません-冗談です、=)

したがって、URLリファラーは、実際のクライアントクリック(アンカータグ、ボタン)によってのみ入力されます。

それを手動でURLに入れるときではありません(これは私のJavaScriptが行っていることです)。

私がしなければならない解決策は、SingleSignOn.aspxページにCookieを作成し、再度リダイレクトする前にJavaScriptからそのCookieを読み取ることです。

必要なものだけ、もっとクッキー。=(

ここの誰かがより良い考えを持っていない限り、それは悪いことです。

于 2010-09-17T05:30:24.760 に答える
1

それはかなり遅いですが、あなたが応答を管理するにつれて。コンテンツをリダイレクトする場合は、クエリパラメータをとして使用できますresponse.redirect("/?url=home.aspx&q=whatever")

次に、ページの読み込み時または初期化時にキャプチャして、適切なアクションを実行できます。

于 2020-03-30T15:31:44.167 に答える
0

ただの予感ですが、代わりに絶対URLを使用してみてください/ http://部分も含めてください。

とは言うものの、UrlReferrerがクライアント側から削除される可能性があるため(一部のブラウザー構成でもわからない)、UrlReferrerがそこにあることに依存するべきではありません。

于 2010-09-17T06:48:36.277 に答える