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% 신뢰할 수 없습니다. 속성에 구문 분석할 수 없는 데이터가 포함될 수 있습니다.Uri
class. 값을 항상 읽을 수 있도록 하려면 다음을 사용합니다.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 |