Cneonction和nnCoection HTTP标头

时间:2011-01-25 20:27:59

标签: http interop http-headers

我们在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

1 个答案:

答案 0 :(得分:9)

您确定这是一个真正的问题吗?链接的文章表明,这些类型的标题是“故意拼写错误”,因此负载平衡器,反向代理或其他中间件可能会破坏服务器保持连接保持活动的愿望,而无需跟踪TCP流中的增量。连接的生命。这样的事情实际上可能是必要的,通过强制保持活动连接到其他服务器迁移到上线的服务器,使被击倒和恢复的服务器恢复到现役状态。

如果您的协议依赖于HTTP Connection: keep-alive来运行(cough),那么您可能做错了。