Можно ли перехватить ВЕСЬ сетевой трафик, который происходит в приложении? Идея заключалась бы в том, что каждый отдельный запрос (Ajax, iframe, щелчок привязки, отправка формы, window.location и т. д.) перехватывается, и я могу добавить к запросу собственный заголовок.
До сих пор я использовал XMLHttpRequest.prototype для захвата всех вызовов Ajax. Но это, например, не подхватывает отправку формы.
Возможно ли это в чистом JavaScript без необходимости идти и изменять каждое место, где выполняется сетевой вызов?
Нет, это невозможно. Насколько мне известно, например, нет никакого способа перехватить соединения данных WebRTC. И даже если бы вы могли на прикладном уровне, на самом деле это не «сетевой трафик».
В идеале код JavaScript должен выполняться еще до того, как браузер начнет обрабатывать действие.
??? JavaScript запускается на странице, которая загружается в браузер... так как же он может работать до того, как браузер что-либо сделает? Может быть, вы думаете о написании расширения для браузера? Но для чего нужен этот настраиваемый заголовок? Я думаю, вместо этого вы могли бы использовать файлы cookie. Это обычный способ убедиться, что браузер прикрепляет дополнительную информацию к запросам в определенном домене.
Допустим, я нажал кнопку отправки в форме. В идеале указанная функция JavaScript должна выполняться, изменять URL-адрес, на который собирается перейти браузер, а затем возобновлять стандартное поведение. Я в основном ищу какое-то общее событие, которое запускается всеми этими действиями.
вы можете изменить сам URL-адрес (например, при отправке формы), но не заголовки. И нет никакого способа сделать его общим на самом деле. Вы также не можете изменить такие вещи, как запросы, сгенерированные URL-адресами, включенными в теги <img src, или что-то в этом роде. Единственный способ, которым вы, мощь, сможете выполнить это требование, — это либо а) использовать файлы cookie вместо заголовков (конечно, сервер тоже необходимо изменить), либо использовать расширение браузера. Как я уже сказал, это немного зависит от цели этого пользовательского заголовка, которую вы не объяснили.
Можно ли использовать сервис-воркера? Взгляните на этот вопрос
«в приложении» — я полагаю, вы имеете в виду клиентскую часть веб-приложения?
@James, насколько я знаю, до сих пор применяется только к запросам ajax. Я не думаю, что он может отслеживать запросы все на конкретной странице (или даже на отдельных страницах сайта), о чем здесь говорится.
@ADyson Я все еще с нетерпением жду возможности использовать сервисного работника, но я почти уверен, что они могут перехватывать все запросы https со страницы, на которой они зарегистрированы.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Кажется, вы ищете Сервисные работники.
Я изучил это, но оказалось, что любой может просто отключить их в настройках своего браузера, что лишает смысла.
@DemCodeLines Каждый может отключить JavaScript в настройках своего браузера. Почему тебя это волнует? Конечно, ваша страница должна по-прежнему работать без современных функций, но какая функциональность будет потеряна, если вы не добавите настраиваемый заголовок?
Нет. Вы можете довольно легко просматривать запросы AJAX, но не другие вещи. На самом деле есть логическая проблема со всей идеей: полная перезагрузка страницы (такая как window.location, отправка формы, нажатие пользователем F5 и т. д.) уничтожает текущий HTML-документ в браузере и заменяет его новым с сервера. Таким образом, любой JavaScript, работающий на этой странице, также уничтожается и заменяется. Поэтому любой код мониторинга, также работающий на JavaScript на странице, уничтожается... видите проблему?