私は、ブラウザのHTTP Referrer in ASP.Net(C#)を取得する、迅速で簡単で信頼性の高い方法を探しています。 HTTPリファラー自体が信頼できないことは知っていますが、isが存在する場合、リファラーを取得する信頼できる方法が必要です。
現在のリクエストの rlReferrer プロパティを使用できます。
Request.UrlReferrer
これは、リクエストから Referer HTTPヘッダーを読み取ります。このヘッダーは、クライアント(ユーザーエージェント)によって提供される場合と提供されない場合があります。
Request.UrlReferrer
プロパティを使用します。
シーンの下では、ServerVariables("HTTP_REFERER")
プロパティをチェックしています。
Request.Headers["Referer"]
リファラーHTTPヘッダーの形式が正しくない場合(通常は制御されていないために発生する可能性があります)、Request.UrlReferer
はSystem.UriFormatException
をスローします。
Request.ServerVariables
の使用に関しては、MSDNに従って:
Request.ServerVariablesコレクション
ServerVariablesコレクションは、事前定義された環境変数とリクエストヘッダー情報の値を取得します。
Request.Headersプロパティ
HTTPヘッダーのコレクションを取得します。
Request.Headers
はすべての環境変数とヘッダーを含むため、Request.ServerVariables
はRequest.ServerVariables
よりも適切な選択です。ここで、Request.Headers
はヘッダーのみを含むはるかに短いリストです。
したがって、最善の解決策は、Request.Headers
コレクションを使用して値を直接読み取ることです。ただし、フォームに値を表示する場合は、値のHTMLエンコードに関するMicrosoftの警告に注意してください。
このように: HttpRequest.UrlReferrer Property
Uri myReferrer = Request.UrlReferrer;
string actual = myReferrer.ToString();
私は.Net Core 2 mvcを使用していますが、これは私のために機能します(プレビューページを取得するため):
HttpContext.Request.Headers["Referer"];
string referrer = HttpContext.Current.Request.UrlReferrer.ToString();
いつか、このようなすべてのリンクを提供する必要があります
System.Web.HttpContext.Current.Request.UrlReferrer.ToString();
(「現在」が設定されていない場合のオプション)
他の返信に属し、nullを取得するための条件句を追加しました。
string ComingUrl = "";
if (Request.UrlReferrer != null)
{
ComingUrl = System.Web.HttpContext.Current.Request.UrlReferrer.ToString();
}
else
{
ComingUrl = "Direct"; // Your code
}