ASP.Net(C#)でブラウザーのHTTPリファラーを取得するための迅速、簡単、かつ信頼性の高い方法を探しています。HTTPリファラー自体が信頼できないことはわかっていますが、リファラーが存在する場合は、信頼できる方法でそれを取得する必要があります。
ASP.Net(C#)でブラウザーのHTTPリファラーを取得するための迅速、簡単、かつ信頼性の高い方法を探しています。HTTPリファラー自体が信頼できないことはわかっていますが、リファラーが存在する場合は、信頼できる方法でそれを取得する必要があります。
回答:
現在のリクエストのUrlReferrerプロパティを使用できます。
Request.UrlReferrer
これは、クライアント(ユーザーエージェント)によって提供される場合とされない場合がある要求から、Referer HTTPヘッダーを読み取ります。
Request.UrlReferrer
サーバー側ポストバック後に使用する場合は注意してください。もちろん、Request.UrlReferrer
今はあなたがポストバックしているページの値を持っています。ほとんどの場合、人々は前のページを必要とします。この場合、ページが最初に読み込まれるときに、前のページをビューステート変数などに保存していることを確認してください。そして、この変数にアクセスすると、元のページに戻ります。たとえば、あなたが行うことができ、asp.netフォームのページロードイベント:if (Request.UrlReferrer != null) ViewState["PreviousPageUrl"] = Request.UrlReferrer.ToString();
Response.Redirect(ViewState["PreviousPageUrl"] != null ? ViewState["PreviousPageUrl"].ToString() : "SomeOtherPage.aspx");
Request.UrlReferrer
プロパティを使用します。
シーンの下では、ServerVariables("HTTP_REFERER")
プロパティをチェックしています。
UrlReferrer
単純な呼び出しよりもはるかに多くのことを示しているため、確実とは言えませんServerVariables("HTTP_REFERER")
ServerVariables["HTTP_REFERER"]
返すのに対し、URIを返すことはわかります。Request.UrlReferrer
Request.Headers["Referer"]
Request.UrlReferer
プロパティがスローされますSystem.UriFormatException
リファラHTTPヘッダーの形式が正しくない場合(それはあなたのコントロール下で、通常ではありませんので、これが起こることができます)。Request.ServerVariables
MSDNごとのの使用について:
Request.ServerVariablesコレクション
ServerVariablesコレクションは、事前に定義された環境変数とリクエストヘッダー情報の値を取得します。
Request.Headersプロパティ
HTTPヘッダーのコレクションを取得します。
Request.Headers
すべての環境変数とヘッダーが含まれているRequest.ServerVariables
ので、Request.ServerVariables
はより良い選択です。ここRequest.Headers
で、はヘッダーのみを含む非常に短いリストです。
したがって、最善の解決策は、Request.Headers
コレクションを使用して値を直接読み取ることです。ただし、値をフォームに表示する場合は、HTMLエンコードに関するMicrosoftの警告に注意してください。
Referer
ヘッダーのスペルはHTTP_REFERRER
サーバー変数とは異なることに注意してください。
このように:HttpRequest.UrlReferrerプロパティ
Uri myReferrer = Request.UrlReferrer;
string actual = myReferrer.ToString();
グーグルがC# Web API Referrer
ここを検索するとこの投稿に移動するので、ここでの取り決めです:Web API
を含まないRequest
通常のMVC Request
とは異なるタイプのを使用しHttpRequestMessage
ますUrlReferrer
。通常のWeb API
リクエストにはこの情報が含まれていないため、本当に必要な場合は、クライアントにその情報を含めてもらう必要があります。これをの一部にすることもできますAPI Object
が、より良い方法はHeaders
です。
まず、拡張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();
string referrer = HttpContext.Current.Request.UrlReferrer.ToString();