HTTP响应头中的“拼写错误”:“Cneonction: close”

最近在日常工作中经常要盯着HTTP请求和响应头,突然发现一个疑似拼写错误: Cneonction: close

这个难道不应该是 Connection: close 吗?根据https://serverfault.com/a/790199/415775:这代表服务器对客户端说“虽然你请求里要求keep-alive,但我不鸟你,我的事干完了所以我把连接关掉了”。到底是Nginx还是什么上游的服务器出了如此低级的错误?

经过一些搜索,发现这其实并不是一个真正的拼写错误。业界著名的硬件负载均衡方案提供商Citrix旗下有一款产品叫NetScaler,当它认为上游返回的响应,其HTTP或HTTPS连接可以被优化时,会覆写响应头;而它覆写响应头的方式,就是把 Connection 改成 Cneonction ,浏览器等客户端会忽视这一“拼写错误”的响应头,配合服务器端保持连接。这一修改方式的好处是,可以将HTTP包保持在原有大小,甚至可以保持同样的TCP checksum。

参考:https://news.ycombinator.com/item?id=477109