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
과 다른 유형을 사용합니다 . 정상적인 요청에는이 정보가 포함되어 있지 않으므로 실제로 필요한 경우 클라이언트가이를 포함하도록해야합니다. 이것을 귀하의 일부로 만들 수 있지만 더 나은 방법은를 사용하는 것 입니다.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();