Получить явный URL-адрес, введенный в браузере с ядром asp.net - PullRequest
0 голосов
/ 21 ноября 2018

Я работаю над приложением ASP.NET Core 2.1, которое использует ReactJS на клиенте, и хотел бы регистрировать URL-адреса, введенные явно в браузере для целей отслеживания.Например, я хотел бы знать, когда пользователь явно вводит: http://myapp.com/; http://myapp.com/contact; http://myapp.com/help; и т. Д. ... в браузере.Я могу отслеживать, когда пользователь нажимает на различные ссылки, когда они уже находятся в http://myapp.com, используя Javascript, но это когда пользователь вводит его прямо в браузер (или нажимает на ссылку из поиска Google)что я в настоящее время не могу отследить.

Я искал перезапись промежуточного программного обеспечения URL, а также пытался найти способ доступа к HttpContext из чего-то вроде ConfigureServices в классе Startup, но я нев состоянии понять это.

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Вы можете проверить заголовки Referer.Ядро Asp.Net имеет библиотеку расширений http, которая имеет метод расширения для получения типизированных заголовков.

Добавьте это:

using Microsoft.AspNetCore.Http.Extensions;

Затем получите доступ к Referer с помощью расширения GetTypedHeaders () наHttpContext, вот некоторые из свойств:

httpContext.Request.GetTypedHeaders().Referer.AbsolutePath
httpContext.Request.GetTypedHeaders().Referer.AbsoluteUri
httpContext.Request.GetTypedHeaders().Referer.Authority
httpContext.Request.GetTypedHeaders().Referer.Host
httpContext.Request.GetTypedHeaders().Referer.PathAndQuery

Скажем, наш URL-адрес ссылается на:

http://localhost:4200/profile/users/1?x=1

Указанные выше свойства будут иметь следующие значения:

/profile/users/1
http://localhost:4200/profile/users/1?x=1
localhost:4200
localhost
/profile/users/1?x=1
0 голосов
/ 21 ноября 2018

Создание Middleware довольно простое, слегка адаптировав пример из Microsoft Doc запишет URL.

app.Use(async (context, next) =>
{
    var logger = new MyLogger();
    var requestPath = context.Request.Path;
    logger.Log(requestPath);
    await next.Invoke();
});

Однако я не думаю, что можно отличить отHttpContext был ли введен URL-адрес в адресной строке браузера, в отличие от любого старого запроса GET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...