Я ищу быстрый, простой и надежный способ получить браузер HTTP Referrer в ASP.Net (С#). Я знаю, что HTTP Referrer сам ненадежен, но я хочу надежный способ получить реферер, если он присутствует.
Получение HTTP-ссылки в ASP.NET
Ответ 1
Вы можете использовать свойство UrlReferrer текущего запроса:
Request.UrlReferrer
Ответ 2
Используйте свойство Request.UrlReferrer
.
Под кадром просто проверяется свойство ServerVariables("HTTP_REFERER")
.
Ответ 3
Request.Headers["Referer"]
Объяснение
Request.UrlReferer
будет бросать System.UriFormatException
, если заголовок HTTP-заголовка отклонен (что может случиться, поскольку оно обычно не под вашим контролем).
Что касается использования Request.ServerVariables
, для MSDN:
Коллекция Request.ServerVariables
Коллекция ServerVariables извлекает значения предопределенных переменных среды и запрашивает информацию заголовка.
Свойство Request.Headers
Получает коллекцию HTTP-заголовков.
Request.Headers
является лучшим выбором, чем Request.ServerVariables
, так как Request.ServerVariables
содержит все переменные среды, а также заголовки, где Request.Headers
- гораздо более короткий список, содержащий только заголовки.
Таким образом, лучшим решением является использование коллекции Request.Headers
для непосредственного чтения значения. Обратите внимание на предупреждения Microsoft о кодировании HTML значения, если вы собираетесь отображать его в форме.
Ответ 4
Нравится это: Свойство HttpRequest.UrlReferrer
Uri myReferrer = Request.UrlReferrer;
string actual = myReferrer.ToString();
Ответ 5
Так как 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();
Ответ 6
string referrer = HttpContext.Current.Request.UrlReferrer.ToString();
Ответ 7
Я использую .Net Core 2 mvc, это работает для меня (чтобы получить страницу предварительного просмотра):
HttpContext.Request.Headers["Referer"];
Ответ 8
Когда-нибудь вы должны указать всю ссылку, подобную этой
System.Web.HttpContext.Current.Request.UrlReferrer.ToString();
(в опции, когда "Текущий" не установлен)