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
'programing' 카테고리의 다른 글
| 이클립스 오류: 'Java 가상 시스템을 생성하지 못했습니다.' (0) | 2023.05.21 |
|---|---|
| MongoDB: 비어 있지 않은 문서 배열과 일치 (0) | 2023.05.21 |
| Postgre의 누적 합계 계산SQL (0) | 2023.05.21 |
| 새 Git 분기에 현재 변경 내용 삽입 (0) | 2023.05.21 |
| 고양이를 사용하여 파일의 첫 줄을 읽는 방법은 무엇입니까? (0) | 2023.05.21 |