Получение http-реферера ASP.NET
Я ищу быстрый, простой и надежный способ получения браузера http Referrer in ASP.Net (C#). Я знаю, что сам http-реферер ненадежен, но мне нужен надежный способ получить реферер, если он и присутствует.
8 ответов:
вы могли бы использовать UrlReferrer свойство текущего запроса:
Request.UrlReferrer
Это будет читать Referer заголовок HTTP из запроса, который может или не может быть предоставлен клиентом (агентом пользователя).
использовать
Request.UrlReferrer
собственность.под сценами он просто проверяет
ServerVariables("HTTP_REFERER")
собственность.
такой: HttpRequest.UrlReferrer Собственность
Uri myReferrer = Request.UrlReferrer; string actual = myReferrer.ToString();
Request.Headers["Referer"]
объяснение
The
Request.UrlReferer
броситSystem.UriFormatException
Если заголовок HTTP referer искажен (что может произойти, поскольку он обычно не находится под вашим контролем).как использовать
Request.ServerVariables
, на MSDN:запрос.Коллекции ServerVariables
коллекция ServerVariables извлекает значения предопределенных переменных среды и информацию заголовка запроса.
запрос.Свойство Заголовков
получает коллекцию заголовков HTTP.
Request.Headers
лучше, чемRequest.ServerVariables
СRequest.ServerVariables
содержит все переменные среды, а также заголовки, гдеRequest.Headers
- это гораздо более короткий список, содержащий только заголовки.поэтому лучшим решением является использование
Request.Headers
коллекция для чтения значения напрямую. Прислушайтесь к предупреждениям Microsoft о Однако HTML кодирует значение, если вы собираетесь отображать его в форме.
так как 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();