Я не совсем понимаю, как это выразить, но мой сервер NodeJS недавно получал ошибки, потому что некоторая библиотека промежуточного программного обеспечения не может анализировать определенные параметры из URL-адресов. Когда я смотрю, для каких URL-адресов это происходит, url кажется что-то вроде
/*!%20%20*%20angular-hotkeys%20v1.4.5%20*%20https://chieffancypants.github.io/angular-hotkeys%20*%20Copyright%20(c)%202014%20Wes%20Cruver%20*%20License:%20MIT%20*/.cfp-hotkeys-container%7Bdisplay:table!important;position:fixed;width:100%;height:100%;top:0;left:0;color:
Да. Это URL. Я знаю, что это не похоже на URL. Это первые 270 символов файла CSS, который я использую. Периодически запрашиваются и другие файлы CSS.
Что, черт возьми, здесь происходит?
Я посмотрел на пользовательские агенты, которые отправляют эти запросы, и это смесь: Chrome 72 на Mac, Chrome 71 на Linux, Firefox 64 на Mac. Так что, по-видимому, не мошеннический браузер или паук.
Я просмотрел свой код, и у этих файлов есть только одна ссылка, например
<link defer="defer" rel='stylesheet' href="/css/lib/hotkeys.min.css">
(не все они имеют функцию отсрочки), и никто не сообщал о проблемах с загрузкой этих файлов.
Я планирую написать небольшую часть промежуточного программного обеспечения, которое будет перехватывать эти запросы, поскольку все они начинаются с комментария css. /*
и вернуть ошибку до того, как промежуточное ПО для анализа параметров станет раздражительным. Но на самом деле это не объясняет, что происходит.
Вы не должны видеть ошибок в своем приложении для подобных вещей. Ваше приложение действительно должно уметь обрабатывать любой URL без слез. Если по этому URL-адресу нет контента, просто верните 404. URL-адрес - это то, что вы не контролируете, и ваш рабочий веб-сервер воля увидеть действительно странные URL-адреса. Боты, пытающиеся использовать эксплойты на основе URL-адресов, все еще довольно распространены в наши дни.
Сказав это, вы можете просто сбрасывать заголовки запроса на такие ошибки, взглянуть на реферер и пользовательский агент, чтобы отследить, как и когда это происходит.