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

时间:2016-03-07 17:51:22

标签: http http-headers protocols cache-control http-1.1

HTTP 1.1服务器如何响应HTTP 1.0支持的HTTP Pragma : no-cache之类的HTTP 1.0请求,而不是HTTP 1.1中支持

1 个答案:

答案 0 :(得分:6)

如果我们假设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

但是HTTP 1.0请求不支持Cache-Control上面的响应表明它是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版本构建适当的响应。对于与较新的,向后兼容的服务器(例如 HTTP 1.1)进行通信的旧客户端( .e.g。 HTTP 1.0),这可以正常工作。

但是,如果较新的客户端与较旧的服务器通信,例如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-isms。在这种情况下,HTTP 1.0服务器可能会使用" 400 Bad Request"拒绝响应。 (或其他类似的非成功响应代码)由于版本不兼容,服务器可能会对HTTP 1.1请求发出HTTP 1.0响应:

HTTP/1.0 200 OK
Pragma: no-cache

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

希望这有帮助!