我们在Web上的互操作性方面经常遇到一些问题。浏览器供应商的这些问题之一是错误拼写的Connection
HTTP标头。最常见的错误是由这两种形式给出的。
nnCoection:
Cneonction:
有一些关于此的文章,包括Fun with HTTP headers。通常它会在一段时间内发生,然后消失。似乎其中一些是由负载均衡器创建的,例如this example:NetScaler Appliance。
您是否知道造成这些问题的任何其他硬件或软件实例?
更新以下是一个不发送好Connection
HTTP标头的网站示例。
curl -sI ehg-nokiafin.hitbox.com
HTTP/1.1 200 OK
Date: Tue, 25 Jan 2011 20:35:45 GMT
Server: Hitbox Gateway 9.3.6-rc1
P3P: policyref="/w3c/p3p.xml", CP="NOI DSP LAW NID PSA ADM OUR IND NAV COM"
Cneonction: close
Pragma: no-cache
Cache-Control: max-age=0, private, proxy-revalidate
Expires: Tue, 25 Jan 2011 20:35:46 GMT
Content-Type: text/plain
Content-Length: 23
更新2011-01-26
在关于AWS的亚马逊论坛上,有一个thread关于nnCoection
。评论说:
仅供参考,它拼错了这个词的原因 互联网是这样的 check-sum(一个简单的总和)仍然添加 起来,这种变化可以发生在 包级别。如果它完全 删除标题,它将不得不 停止转发响应,直到 标题完全被读取,所以它 可以重写标题,重新计算 校验和然后发送它。
与
sum(ord(c) for c in "Connection")
和
sum(ord(c) for c in "nnCoection")
两者都给出1040
答案 0 :(得分:9)
您确定这是一个真正的问题吗?链接的文章表明,这些类型的标题是“故意拼写错误”,因此负载平衡器,反向代理或其他中间件可能会破坏服务器保持连接保持活动的愿望,而无需跟踪TCP流中的增量。连接的生命。这样的事情实际上可能是必要的,通过强制保持活动连接到其他服务器迁移到上线的服务器,使被击倒和恢复的服务器恢复到现役状态。
如果您的协议依赖于HTTP Connection: keep-alive
来运行(cough),那么您可能做错了。