Обложка канала

.NET Разработчик

Опытный разработчик не так давно зашёл в .Net и поставил цель получить сертификат Microsoft. Свой ежедневный прогресс он описывает на канале .Net Разработчик. Заметки об изученном материале, советы по повышению производительности и поддержке мотивации, ин

.NET Разработчик

3 года назад
Открыть в
День 1617. #ЗаметкиНаПолях Отслеживание Кликов по Ссылке на HTML-Странице Существует множество способов отслеживать, когда пользователь щёлкает по ссылке на HTML-странице. Большинство из них требуют JS-скрипта и регистрации события click для элемента <a>. Совсем недавно в элемент <a> был добавлен атрибут ping. Он позволяет указать URL-адрес, на который будет отправлен ping-запрос при нажатии на ссылку. Таким образом отпадает необходимость в JS-скрипте. Атрибут ping хорошо поддерживается. Только Firefox отключил эту функцию по умолчанию. Кроме того, блокировщики рекламы могут заблокировать ping-запрос (так же как они блокируют некоторые JS-скрипты). Поэтому, глобальная поддержка функции составляет около 93%. Использование атрибута ping даёт некоторые преимущества: - работает, когда JavaScript отключен, - ping-запросы являются фоновыми, т.е., когда пользователь покидает страницу, запрос ping не будет прерван. - тело ответа на ping-запрос игнорируется; браузеру разрешено немедленно завершать соединение, когда сервер отправляет тело ответа. Это помогает экономить ресурсы сервера и браузера. - ping-запросы не кэшируются, так как это POST-запрос, поэтому каждый ping приводит к запросу на сервер. Вот пример использования атрибута ping:
<a href="/demo" ping="/ping">Demo</a>

Вы можете обработать этот ping-запрос в вашем приложении ASP.NET Core application. Например:
app.MapPost("/ping", 
 ([FromHeader(Name = "ping-from")]string from, 
  [FromHeader(Name = "ping-to")] string to) =>
{
  // обрабатываем ping-запрос
  return Results.Ok();
});

В примере выше заголовки ping-from и ping-to выдают исходный URL и запрашиваемый URL (указанный в атрибуте href) соответственно. Если вам нужно различить несколько ссылок на одной странице, можно использовать параметр строки запроса. Например, если у вас есть две ссылки на одной странице, вы можете использовать <a ping="/ping?id=Link1"> и <a ping="/ping?id=Link2">, чтобы различать их. Источник: https://www.meziantou.net/tracking-click-on-anchors-in-an-html-page.htm