我不太确定如何表达这一点,但我的 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:
是的。那是网址。我知道它看起来不像一个网址。这是我正在使用的 CSS 文件的前 270 个字符。也会定期请求其他 CSS 文件。
这到底是怎么回事?
我查看了发送这些请求的用户代理,它是混合的:mac 上的 chrome 72,linux 上的 chrome 71,mac 上的 firefox 64。所以大概不是流氓浏览器或蜘蛛。
我查看了我的代码,这些文件每个只有一个引用,例如
<link defer="defer" rel='stylesheet' href="/css/lib/hotkeys.min.css">
(他们并不都有延迟)并且没有人报告这些文件未加载的问题。
我的计划是编写一个中间件来拦截这些请求,因为它们都以 css 注释开头,/*
并在参数解析中间件变得脾气暴躁之前返回错误。但这实际上并不能解释正在发生的事情。
你不应该在你的应用程序中看到这样的错误。您的应用程序应该能够真正处理任何 url 而不会哭泣。如果该 URL 没有内容,则返回 404。该 URL 是您无法控制的,您的生产网络服务器会看到非常奇怪的 URL。如今,尝试基于 url 的攻击的机器人仍然很常见。
话虽如此,您可以简单地转储此类错误的请求标头,查看 Referrer 和 User-Agent 以跟踪这种情况发生的方式/时间。