Я ищу быстрый, простой и надежный способ получения HTTP Referrer браузера в ASP.Net (C#). Я знаю, что HTTP Referrer сам ненадежен, но мне нужен надежный способ получить реферер, если он есть.Получение HTTP Referrer в ASP.NET
ответ
Вы можете использовать UrlReferrer свойства текущего запроса:
Request.UrlReferrer
Это будет читать Referer HTTP заголовок из запроса, которые могут или не могут быть переданы клиентом (агент пользователя).
Следует отметить, что это свойство будет генерировать исключение System.UriFormatException, если заголовок HTTP-заголовка отклонен. – NightOwl888 2014-09-05 20:15:04
@ Darin Dimitrov пытается создать REST API с помощью WEB API. UrlReferrer не является частью объекта Request. Должен ли я добавить «использование» и т. Д. Что мне не хватает? DLL? – Ravi 2014-11-04 00:21:59
Следует отметить, что Разница является написанием правильной. Заголовок HTTP имеет орфографическую ошибку. MS использует правильное написание в имени свойства. К сожалению, эти два не совпадают, что может привести к путанице некоторых людей (меня) при тестировании. – John 2015-09-04 18:23:24
Используйте Request.UrlReferrer
.
Под кадром просто проверяется имущество ServerVariables("HTTP_REFERER")
.
Как это: HttpRequest.UrlReferrer Property
Uri myReferrer = Request.UrlReferrer;
string actual = myReferrer.ToString();
Request.Headers["Referer"]
Объяснение
Request.UrlReferer
выбросит System.UriFormatException
если заголовок Referer HTTP имеет неверный формат (что может произойти, так как это обычно не под вашим контролем).
Что касается использования Request.ServerVariables
, в MSDN:
Request.ServerVariables Коллекция
Коллекция ServerVariables извлекает значения предопределенных переменных окружения и информации заголовка запроса.
Request.Headers недвижимости
Получает коллекцию 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();
string referrer = HttpContext.Current.Request.UrlReferrer.ToString();
Я использую .Net Core 2 MVC, эту одну работу для меня (чтобы получить страницу предваротельные):
HttpContext.Request.Headers["Referer"];
Иногда вы должны дать все ссылки, как этот
System.Web.HttpContext.Current.Request.UrlReferrer.ToString();
(опция, когда "Current" не основан)
- 1. WCF WebGet Capture HTTP Referrer?
- 2. HTTP Referrer. Это надежный?
- 3. HTTP Referrer Gotchas?
- 4. Что будет HTTP referrer?
- 5. HTTP Referrer on Redirection
- 6. HTTP Referrer через Age Gate
- 7. google display network HTTP referrer
- 8. Установить HTTP Referrer с сервера?
- 9. PHP Referrer Referrer (рекурсивно)
- 10. HTTP Referrer и IE7 и IE8
- 11. HTTP Header Referrer Обманывание с использованием PHP
- 12. Spoofing HTTP-запрос Referrer из HTML?
- 13. Правильный способ получить http referrer из jquery
- 14. Веб-безопасность - HTTP-местоположение = HTTP-Referrer, если внешний домен? Зачем?
- 15. ASP.NET - Response.Redirect Not Population Url Referrer
- 16. как мы должны проверить HTTP-ссылку referrer в aspx .net
- 17. Как я могу получить http referrer в Tornado?
- 18. Как получить HTTP-заголовок referrer в Gwt Entrypoint
- 19. Как не включать строку запроса URL-адреса в HTTP Referrer
- 20. Когда браузер устанавливает «referrer» в заголовке HTTP-запроса?
- 21. Ссылка Referrer в HTML
- 22. Сессия referrer в Flex
- 23. Передача Referrer URL
- 24. php: spoofing referrer?
- 25. Как я могу получить Url Referrer в ASP.NET Core MVC?
- 26. <meta name = 'referrer'> works, Referrer-Policy header не
- 27. Regex, Php And Referrer?
- 28. Проверить для referrer в Backbone.js
- 29. Магазин Facebook app referrer
- 30. Htaccess - перенаправление по referrer
возможный дубликат [Как получить URL ссылающейся в действие ASP.NET MVC?] (HTTP: // ул ackoverflow.com/questions/1471188/how-do-i-get-the-referrer-url-in-an-asp-net-mvc-action) – 2014-05-29 15:10:45
Fro Asp.Net Core см. [Как получить URL-адрес URL-адреса в ASP .NET Core MVC?] (// stackoverflow.com/q/38772394) – 2017-09-21 09:05:51