Bryan P Clauss Ответов: 1

Как я могу получить вызывающий URL-адрес от ASP.NET ядро 3.1 httprequest


Мне нужно знать URL-адрес (по крайней мере, имя сервера) HttpRequest в моем приложении.

www.request.com посылает запрос в мой сервис (www.mywebserver.com).

К сожалению, документы Microsoft менее чем адекватны в объяснении того, что такое свойства для HttpRequest.

Рассматриваемое дело:
Класс HttpRequest (Microsoft.AspNetCore.Протокол HTTP) | Майкрософт Документы[^]
PathBase - возвращает или задает RequestPathBase.

Нажатие на PathBase дает этот лакомый кусочек информации:
Возвращает или задает RequestPathBase.

Перефразируя здесь: это тип PathString, и это RequestPathBase.

Это круг, если вы не знаете терминологии. Это моя pathbase (куда направляется запрос) или pathbase вызывающего веб-сервера (откуда пришел запрос).

Ни в малейшей степени не помогает.

Я был бы счастлив получить конкретный ответ на свой вопрос (Как получить URL-адрес вызывающего веб-сайта), но я был бы в восторге от ответа, который мог бы указать мне на то, что на самом деле представляют собой все методы/свойства/методы расширения и что они делают.

Спасибо,
Брайан Клаусс

Что я уже пробовал:

Поищите в интернете примеры, которые действительно объясняют объект HttpRequest, а не примеры, предполагающие, что вы уже знаете, что все это значит.

Sandeep Mewara

А вы пробовали:
1. Microsoft.AspNetCore.Протоколу HTTP.Расширения.Урихелпер.GetFullUrl(запрос) или
2.

public static class HttpRequestExtensions{    
        public static string GetRawTarget(this HttpRequest request)
        {    
           var httpRequestFeature = request.HttpContext.Features.Get<IHttpRequestFeature>();    
           return httpRequestFeature.RawTarget;
        }
}

F-ES Sitecore

Заголовок, который вы ищете, - это реферер, как указано Ричардом в решении 1, однако он обычно заполняется только тогда, когда кто-то перемещается через браузер. Если вызов выполняется программно, например вызов API, то реферер будет заполнен только в том случае, если вызывающий код предоставляет его, чего он, вероятно, не делает. Если заголовок реферера не содержит необходимых вам данных, то нет никакого способа получить эти данные, поскольку что-либо может вызвать Ваш url-адрес, это не обязательно должен быть веб-сайт в общественном достоянии.

1 Ответов

Рейтинг:
2

Richard Deeming

Если вы ищете подробную информацию о сайте, который сделал запрос, вам нужно посмотреть на заголовок "Referer". Но имейте в виду, что это может быть не установлено вообще, и значение может быть полностью под контролем вызывающего кода.

Uri callingUrl = Request.GetTypedHeaders().Referer;
HeaderDictionaryTypeExtensions.Метод GetTypedHeaders (Microsoft.AspNetCore.Протокол HTTP) | Майкрософт Документы[^]
RequestHeaders.Свойство Referer (Microsoft.AspNetCore.Протоколу HTTP.Заголовков) | Майкрософт Документы[^]
Реферер - HTTP | MDN[^]