Я ищу быстрый, простой и надежный способ получения HTTP-реферера браузера в ASP.Net ( C # ). Я знаю , что HTTP Referrer сам ненадежна, но я хочу , надежный способ получения реферер , если она есть присутствует.
c#
asp.net
http
http-headers
http-referer
Чак Ле Батт
источник
источник
Ответы:
Вы можете использовать свойство UrlReferrer текущего запроса:
Это будет читать HTTP-заголовок Referer из запроса, который может быть предоставлен или не предоставлен клиентом (пользовательским агентом).
источник
Request.UrlReferrer
после обратной передачи на стороне сервера. КонечноRequest.UrlReferrer
, теперь будет иметь значение страницы, на которую вы отправляете сообщение. В большинстве случаев людям нужна предыдущая страница. В этом случае убедитесь, что вы сохраняете предыдущую страницу, скажем, в переменной viewstate при первой загрузке страницы. И затем, когда вы обращаетесь к этой переменной, у нее появляется предыдущая страница, с которой вы пришли. Например, в событии загрузки страницы форм asp.net вы можете сделать:if (Request.UrlReferrer != null) ViewState["PreviousPageUrl"] = Request.UrlReferrer.ToString();
Response.Redirect(ViewState["PreviousPageUrl"] != null ? ViewState["PreviousPageUrl"].ToString() : "SomeOtherPage.aspx");
Используйте
Request.UrlReferrer
свойство.Под сценами он просто проверяет
ServerVariables("HTTP_REFERER")
собственность.источник
UrlReferrer
делает намного больше, чем простой звонокServerVariables("HTTP_REFERER")
ServerVariables["HTTP_REFERER"]
возвращает строку , аRequest.UrlReferrer
возвращает Uri .Объяснение
Request.UrlReferer
Имущество будет бросатьSystem.UriFormatException
, если реферер HTTP заголовок неправильный формат (что может произойти , так как это обычно не под вашим контролем).Что касается использования
Request.ServerVariables
, согласно MSDN:Коллекция Request.ServerVariables
Request.Headers Свойство
Request.Headers
- лучший выборRequest.ServerVariables
, посколькуRequest.ServerVariables
содержит все переменные среды, а также заголовки, гдеRequest.Headers
гораздо более короткий список, содержащий только заголовки.Поэтому лучшее решение - использовать
Request.Headers
коллекцию для непосредственного чтения значения. Обратите внимание на предупреждения Microsoft о кодировке значения HTML, если вы собираетесь отображать его в форме.источник
Referer
заголовок пишется иначе, чемHTTP_REFERRER
переменная сервера.Как это: Свойство HttpRequest.UrlReferrer
источник
Я использую .Net Core 2 mvc, это работает для меня (чтобы получить страницу предварительного просмотра):
источник
Поскольку Google принимает вас на этот пост при поиске
C# Web API Referrer
вот сделка:Web API
использует другой типRequest
от нормальногоMVC Request
называемого ,HttpRequestMessage
который не включаетUrlReferrer
. Поскольку обычныйWeb API
запрос не включает эту информацию, если она вам действительно нужна, вы должны сделать так, чтобы ваши клиенты приложили все усилия, чтобы включить ее. Хотя вы могли бы сделать это частью своейAPI Object
, лучше использоватьHeaders
.Во-первых, вы можете расширить,
HttpRequestMessage
чтобы предоставитьUrlReferrer()
метод:Затем вашим клиентам необходимо установить
Referrer Header
своиAPI Request
:И теперь
Web API Request
включает данные реферера, к которым вы можете получить доступ вот такWeb API
:источник
источник
Когда-нибудь вы должны дать всю ссылку вот так
(в варианте, когда «Текущий» не основан)
источник
Относительно другого ответа я добавил условие для получения null.
источник