HTTP请求中缺少User-Agent是否有效?

Jac*_*cob 15 http

我们注意到,我们会不时收到没有有效User-Agent字符串的HTTP请求.是否存在接受此类HTTP请求的有效实际案例?

即为什么我们不会自动阻止接收此类请求的所有IP?

更新 我对"真实世界"这个短语的意图是表明我并不是在询问技术上可以或不可能发生的事情.显然,它可以在没有标题的情况下提交HTTP请求.我想知道你将这种类型的HTTP请求放入你的服务器会有什么"真实世界"的情况.

fvu*_*fvu 14

RFC 7231中所述(但在RFC2616中可以找到几乎相同的段落):

5.5.3用户代理

"User-Agent"标头字段包含有关发起请求的用户代理的信息,服务器通常使用该信息来帮助确定报告的互操作性问题的范围,解决或定制响应以避免特定的用户代理限制,以及用于分析关于浏览器或操作系统的使用.用户代理应该在每个请求中发送User-Agent字段,除非特别配置不这样做.

这里的关键字应该是.是的,有一个RFC定义了这个词应该是什么意思,RFC 2119:

  1. 应该这个词,或形容词"推荐",意味着在特定情况下可能存在忽略特定项目的正当理由,但在选择不同的课程之前必须理解并仔细权衡全部含义.

因此,虽然不发送用户代理的代理不遵循可被视为最佳实践的代理,但它们不违反任何规则(rfc).因此,在我看来,阻止它们并不是真正有效的技术理由.

  • fvu:RFC 2616已过时。除了出于历史目的,实际上再也没有必要引用它了。 (2认同)

Alw*_*win 10

我想很多人在没有User-Agent的情况下使用HTTP请求,主要是在他们使用API​​来执行请求时.

  • “ User-Agent”标头在RFC 2616中是可选的。它* SHOULD *供客户端使用,但并非* REQUIRED *。所有主要的第三方浏览器/客户端都使用它,但是自定义应用程序/ API / bots / etc可能不使用。有一些网络服务器根据提供的“用户代理”来更改响应,甚至拒绝请求(这很烦人)。 (2认同)