我知道http标头顺序对于Web服务器处理请求并不重要(或者至少不应该)。但是,我想知道服务器(特别是反向代理或CDN)检查标头位置以合法请求的可能性。
让我解释一下。当我用firefox做一个简单的http请求时,这些是我的标题:
GET / HTTP/1.1
Host: stackoverflow.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:39.0) Gecko/20100101 Firefox/39.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
DNT: 1
Cookie: yummy=yes_they_are
Connection: keep-alive
Cache-Control: max-age=0
使用Chrome:
GET / HTTP/1.1
Host: stackoverflow.com
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36
DNT: 1
Accept-Encoding: gzip, deflate, sdch
Cookie: yummy=yes_they_are
不完全相同,对吧?然后,如果我将用户代理更改为Firefox:
GET / HTTP/1.1
Host: stackoverflow.com
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:39.0) Gecko/20100101 Firefox/39.0
DNT: 1
Accept-Encoding: gzip, deflate, sdch
Cookie: yummy=yes_they_are
由于标题位置与Firefox“标题排名习惯”不匹配,服务器可以知道正在发生的事情(用户可能会使用Chrome扩展来欺骗其用户代理)。
有些http服务器实际检查那种东西吗?至少,它们是否可能(云端和诸如此类)?或者这是我应该完全不打扰的事情?如果我应该,我在哪里可以找到主浏览器的穷举标题顺序列表?
答案 0 :(得分:0)
一般来说,order does not (and should not) matter。
但基于this answer,也有例外情况。所以,回答问题:是的,服务器(如incapsula)可以使用http标头顺序来捕获浏览器签名。