HTTP 1.1服务器如何响应HTTP 1.0支持的HTTP Pragma : no-cache
之类的HTTP 1.0请求,而不是HTTP 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
您看到的实际行为取决于所涉及的客户端和服务器实现。
希望这有帮助!