一个HTTP 1.1服务器如何响应一个HTTP 1.0请求?

5
HTTP 1.1服务器应如何响应对HTTP 1.0请求头的请求,例如Pragma: no-cache,这些请求头在HTTP 1.0中受支持但在HTTP 1.1中不受支持。
1个回答

8
假设HTTP 1.1服务器希望与HTTP 1.0客户端向后兼容,那么HTTP 1.1服务器将向HTTP 1.0客户端发送HTTP 1.0响应。例如,假设您的HTTP 1.0客户端发送了如下请求:
GET /path/to/resource HTTP/1.0

请注意,请求的最后一部分是“HTTP/1.0”,表示客户端支持的HTTP版本。稍后我们会回到这个问题,但这很重要。
你的HTTP 1.1服务器通常可能想要使用“Cache-Control”响应头来禁用任何缓存,例如:
HTTP/1.1 200 OK
Cache-Control: no-cache

但是Cache-Control不支持HTTP 1.0请求,而上述响应表明它是一个HTTP 1.1响应,这很奇怪,因为它是对HTTP 1.0请求的响应。因此,HTTP 1.1服务器必须生成一个符合HTTP 1.0规范的响应,如下所示:
HTTP/1.0 200 OK
Pragma: no-cache

HTTP 1.1服务器最好注意请求中的HTTP版本,构建一个适合该版本的响应。对于旧客户端(例如HTTP 1.0)与较新的向后兼容服务器(例如HTTP 1.1)通信来说,这很有效。
然而,如果是较新的客户端与较老的服务器进行通信呢?例如,HTTP 1.1客户端与HTTP 1.0服务器进行通信。在这种情况下,请求可能是:
GET /path/to/resource HTTP/1.1
Host: example.com
Cache-Control: no-cache

HTTP 1.0服务器不会识别Cache-Control头部,或其他HTTP 1.1特性。在这种情况下,HTTP 1.0服务器可能因版本不兼容而拒绝响应,返回"400 Bad Request"(或其他类似的非成功响应代码),或者服务器可能对HTTP 1.1请求发出HTTP 1.0响应:
HTTP/1.0 200 OK
Pragma: no-cache

您所看到的实际行为将取决于所涉及的客户端和服务器实现。

希望这可以帮助您!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接