Получение 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();