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

时间:2014-06-17 23:15:25

标签: http

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

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

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

3 个答案:

答案 0 :(得分:13)

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

  

5.5.3 User-Agent

     

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

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

  
      
  1. 应该这个词,或形容词“推荐”,意思是那里   在特定情况下可能存在有效理由忽略a   特殊项目,但必须理解全部含义   在选择不同的课程之前仔细权衡。
  2.   

因此,虽然不发送用户代理的代理不遵循可被视为最佳做法的代理,但它们不违反任何规则(rfc)。所以,在我看来,实际上没有一个有效的技术理由来阻止它们。

答案 1 :(得分:10)

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

答案 2 :(得分:0)

根据我的经验,没有合法用例,至少没有通用用例。

从我的服务器日志来看,所有没有用户代理的请求都是恶意的。全部来自机器人。

理论上,“真正关心隐私”的人可以做到这一点。这取决于您提供的服务。我经营几个网站。不使用浏览器的人不是我的客户。

虽然恶意机器人的开发者添加用户代理(如 Chrome 之类的虚假代理)确实是微不足道的,但这并不意味着它的意图不是非法的。