programing

ASP.NET에서 HTTP Referrer 가져오기

kingscode 2023. 5. 21. 14:47
반응형

ASP.NET에서 HTTP Referrer 가져오기

ASP.Net(C#)에서 브라우저의 HTTP Referrer를 빠르고 쉽고 신뢰할 수 있는 방법을 찾고 있습니다.HTTP Referrer 자체가 신뢰할 수 없다는 것을 알지만, 만약 존재한다면 신뢰할 수 있는 방법을 원합니다.

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

Request.UrlReferrer

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

Request.Headers["Referer"]

설명.

그 부동산은 다음을 던질 것입니다.System.UriFormatException참조자 HTTP 헤더의 형식이 잘못된 경우(일반적으로 사용자가 제어할 수 없기 때문에 발생할 수 있음).

그러므로,Request.UrlReferrer속성은 100% 신뢰할 수 없습니다. 속성에 구문 분석할 수 없는 데이터가 포함될 수 있습니다.Uriclass. 값을 항상 읽을 수 있도록 하려면 다음을 사용합니다.Request.Headers["Referer"]대신.

사용에 관하여Request.ServerVariables여기 있는 다른 사람들이 제안한 것처럼 MSDN에 따라:

부탁한다.서버 변수 컬렉션

ServerVariables 컬렉션은 미리 결정된 환경 변수의 값을 검색하고 헤더 정보를 요청합니다.

부탁한다.머리글 속성

HTTP 헤더 컬렉션을 가져옵니다.

Request.Headers보다 나은 선택입니다.Request.ServerVariables,부터Request.ServerVariables모든 환경 변수와 헤더가 포함되어 있습니다.Request.Headers머리글만 포함된 훨씬 짧은 목록입니다.

따라서 가장 신뢰할 수 있는 솔루션은Request.Headers값을 직접 읽을 수 있는 컬렉션입니다.그러나 HTML 인코딩에 대한 Microsoft의 경고는 양식에 표시할 때 주의해야 합니다.

사용Request.UrlReferrer소유물.

그 장면들 아래에서 그것은 단지 확인하는 것입니다.ServerVariables("HTTP_REFERER")소유물.

다음과 같이:HttpRequest.URL Referer 속성

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

사용하고 있습니다.Net Core 2 mvc, 이것은 나에게 효과가 있습니다(미리보기 페이지를 받기 위해)

HttpContext.Request.Headers["Referer"];

구글이 검색할 때 이 게시물로 이동하기 때문에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);

그고이제는리▁and.Web API Request에는 와같 액할수 있레데포퍼이다에서 수 되어 있습니다.Web API:

Request.UrlReferrer();
string referrer = HttpContext.Current.Request.UrlReferrer.ToString();

때때로 당신은 모든 링크를 이렇게 주어야 합니다.

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

("현재"가 설립되지 않은 경우 옵션)

.NET Core 또는 .NET 5를 사용하는 것이 좋습니다.

httpContext.Request.Headers.TryGetValue("Referer", out var refererHeader)

다른 답변에 따라, 나는 null을 받기 위한 조건 조항을 추가했습니다.

string ComingUrl = "";
if (Request.UrlReferrer != null)
{
    ComingUrl = System.Web.HttpContext.Current.Request.UrlReferrer.ToString();
}
else
{
    ComingUrl = "Direct"; // Your code
}

언급URL : https://stackoverflow.com/questions/4258217/getting-the-http-referrer-in-asp-net

반응형