ASP.Net ( C # ) 에서 브라우저의 HTTP Referrer 를 가져 오는 빠르고 쉽고 안정적인 방법을 찾고 있습니다. 나는 HTTP 리퍼러 자체가 신뢰할 알고 있지만 나는 경우 리퍼러를 얻기의 신뢰할 수있는 방법할까요 이다 선물을.
ASP.Net ( C # ) 에서 브라우저의 HTTP Referrer 를 가져 오는 빠르고 쉽고 안정적인 방법을 찾고 있습니다. 나는 HTTP 리퍼러 자체가 신뢰할 알고 있지만 나는 경우 리퍼러를 얻기의 신뢰할 수있는 방법할까요 이다 선물을.
답변:
현재 요청 의 UrlReferrer 속성을 사용할 수 있습니다 .
Request.UrlReferrer
클라이언트 (사용자 에이전트)가 제공하거나 제공하지 않을 수있는 요청에서 Referer HTTP 헤더를 읽습니다 .
Request.UrlReferrer서버 측 포스트 백 후에 사용 하는 경우주의하십시오 . 물론 Request.UrlReferrer이제 다시 게시하는 페이지의 가치를 갖게됩니다. 대부분의 경우 사람들은 이전 페이지가 필요합니다. 이 경우 페이지가 처음로드 될 때 이전 페이지를 viewstate 변수로 저장하고 있는지 확인하십시오. 그리고이 변수에 액세스하면 이전 페이지가 나타납니다. 예를 들어, 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"]반환 문자열 , 반면 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();
Google은 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();
string referrer = HttpContext.Current.Request.UrlReferrer.ToString();