[c#] ASP.NET에서 HTTP 리퍼러 가져 오기

ASP.Net ( C # ) 에서 브라우저의 HTTP Referrer 를 가져 오는 빠르고 쉽고 안정적인 방법을 찾고 있습니다. 나는 HTTP 리퍼러 자체가 신뢰할 알고 있지만 나는 경우 리퍼러를 얻기의 신뢰할 수있는 방법할까요 이다 선물을.



답변

현재 요청 의 UrlReferrer 속성을 사용할 수 있습니다 .

Request.UrlReferrer

클라이언트 (사용자 에이전트)가 제공하거나 제공하지 않을 수있는 요청에서 Referer HTTP 헤더를 읽습니다 .


답변

Request.UrlReferrer속성을 사용하십시오 .

장면 아래에서는 단지 ServerVariables("HTTP_REFERER")속성을 확인하는 것 입니다.


답변

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의 경고에 유의하십시오.


답변

다음과 같이 : HttpRequest.UrlReferrer 속성

Uri myReferrer = Request.UrlReferrer;
string actual = myReferrer.ToString();


답변

나는 .Net Core 2 mvc를 사용하고 있는데, 이것은 나를 위해 작동합니다 (미리보기 페이지를 얻기 위해) :

HttpContext.Request.Headers["Referer"];


답변

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();