113

ASP.NetC# )でブラウザーのHTTPリファラーを取得するための迅速で簡単で信頼性の高い方法を探しています。HTTPリファラー自体の信頼性が低いことは知っていますが、リファラーが存在する場合は、信頼性の高い方法でリファラーを取得したいと考えています

4

10 に答える 10

177

現在のリクエストのUrlReferrerプロパティを使用できます。

Request.UrlReferrer

これにより、クライアント(ユーザーエージェント)によって提供される場合とされない場合があるリクエストからリファラーHTTPヘッダーが読み取られます。

于 2010-11-23T16:22:45.303 に答える
26
Request.Headers["Referer"]

説明

リファラーHTTPヘッダーの形式が正しくない場合、Request.UrlRefererプロパティはaをスローします(これは通常、ユーザーの制御下にないために発生する可能性があります)。System.UriFormatException

したがって、プロパティは100%信頼できるわけではなく、クラスRequest.UrlRefererに解析できないデータが含まれている可能性があります。Uri値が常に読み取り可能であることを確認するには、Request.Headers["Referrer"]代わりにを使用してください。

ここで他の人が提案しているように使用Request.ServerVariablesすることに関しては、MSDNごとに:

Request.ServerVariablesコレクション

ServerVariablesコレクションは、事前定義された環境変数の値を取得し、ヘッダー情報を要求します。

Request.Headersプロパティ

HTTPヘッダーのコレクションを取得します。

Request.Headersは、すべての環境変数とヘッダーが含まれているRequest.ServerVariablesため、よりも適切な選択です。ここで、はヘッダーのみを含むはるかに短いリストです。Request.ServerVariablesRequest.Headers

したがって、最も信頼できる解決策は、Request.Headersコレクションを使用して値を直接読み取ることです。ただし、フォームに値を表示する場合は、値をHTMLエンコードすることに関するMicrosoftの警告に注意してください。

于 2014-09-05T20:42:14.960 に答える
22

プロパティを使用しRequest.UrlReferrerます。

シーンの下では、ServerVariables("HTTP_REFERER")プロパティをチェックしているだけです。

于 2010-11-23T16:22:45.970 に答える
14

このように:HttpRequest.UrlReferrerプロパティ

Uri myReferrer = Request.UrlReferrer;
string actual = myReferrer.ToString();
于 2010-11-23T16:24:02.153 に答える
12

私は.NetCore2 mvcを使用していますが、これは私のために機能します(プレビューページを取得するため):

HttpContext.Request.Headers["Referer"];
于 2017-11-22T14:23:08.387 に答える
9

C# Web API Referrerグーグルはここで取引を検索するときにこの投稿にあなたを連れて行くので:を含まない通常の呼ばれるものとWeb APIは異なるタイプを使用します。通常のリクエストにはこの情報が含まれていないため、本当に必要な場合は、クライアントに情報を含めるように邪魔しないようにする必要があります。これを自分の一部にすることもできますが、より良い方法はを使用することです。RequestMVC RequestHttpRequestMessageUrlReferrerWeb APIAPI ObjectHeaders

まず、拡張してメソッドHttpRequestMessageを提供できます。UrlReferrer()

public static string UrlReferrer(this HttpRequestMessage request)
{
    return request.Headers.Referrer == null ? "unknown" : request.Headers.Referrer.AbsoluteUri;
}

次に、クライアントはをに設定する必要がありReferrer HeaderますAPI Request

// Microsoft.AspNet.WebApi.Client
client.DefaultRequestHeaders.Referrer = new Uri(url);

そして今、Web API Requestあなたがあなたからこのようにアクセスできるリファラーデータが含まれていますWeb API

Request.UrlReferrer();
于 2015-09-08T05:47:28.240 に答える
3
string referrer = HttpContext.Current.Request.UrlReferrer.ToString();
于 2016-11-04T14:57:06.480 に答える
2

いつかあなたはこのようなすべてのリンクを与える必要があります

System.Web.HttpContext.Current.Request.UrlReferrer.ToString();

(「現在」が設立されていない場合のオプション)

于 2017-12-06T15:01:57.327 に答える
0

他の返信に属し、nullを取得するための条件句を追加しました。

string ComingUrl = "";
if (Request.UrlReferrer != null)
{
    ComingUrl = System.Web.HttpContext.Current.Request.UrlReferrer.ToString();
}
else
{
    ComingUrl = "Direct"; // Your code
}
于 2019-03-05T10:03:36.017 に答える
0

.NETCoreまたは.NET5を使用する場合は、次のことをお勧めします。

httpContext.Request.Headers.TryGetValue("Referer", out var refererHeader)
于 2021-08-13T13:02:10.067 に答える