MINOR: http: update the list of cacheable status codes as per RFC7231

Since RFC2616, the following codes were added to the list of codes
cacheable by default : 204, 404, 405, 414, 501. For now this it only
checked by the checkcache option to detect cacheable cookies.
This commit is contained in:
Willy Tarreau 2017-12-21 11:41:38 +01:00
parent 24ea0bcb1d
commit c55ddce65c
2 changed files with 17 additions and 7 deletions

View File

@ -5438,8 +5438,9 @@ no option checkcache
proxy. When this option is enabled, the only responses which can be delivered
to the client are :
- all those without "Set-Cookie" header ;
- all those with a return code other than 200, 203, 206, 300, 301, 410,
provided that the server has not set a "Cache-control: public" header ;
- all those with a return code other than 200, 203, 204, 206, 300, 301,
404, 405, 410, 414, 501, provided that the server has not set a
"Cache-control: public" header field ;
- all those that result from a request using a method other than GET, HEAD,
OPTIONS, TRACE, provided that the server has not set a 'Cache-Control:
public' header field ;

View File

@ -5388,15 +5388,24 @@ int http_wait_for_response(struct stream *s, struct channel *rep, int an_bit)
switch (txn->status) {
case 200:
case 203:
case 204:
case 206:
case 300:
case 301:
case 404:
case 405:
case 410:
/* RFC2616 @13.4:
* "A response received with a status code of
* 200, 203, 206, 300, 301 or 410 MAY be stored
* by a cache (...) unless a cache-control
* directive prohibits caching."
case 414:
case 501:
/* RFC7231#6.1:
* Responses with status codes that are defined as
* cacheable by default (e.g., 200, 203, 204, 206,
* 300, 301, 404, 405, 410, 414, and 501 in this
* specification) can be reused by a cache with
* heuristic expiration unless otherwise indicated
* by the method definition or explicit cache
* controls [RFC7234]; all other status codes are
* not cacheable by default.
*
* RFC7234#4:
* A cache MUST write through requests with methods