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 proxy. When this option is enabled, the only responses which can be delivered
to the client are : to the client are :
- all those without "Set-Cookie" header ; - all those without "Set-Cookie" header ;
- all those with a return code other than 200, 203, 206, 300, 301, 410, - all those with a return code other than 200, 203, 204, 206, 300, 301,
provided that the server has not set a "Cache-control: public" header ; 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, - 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: OPTIONS, TRACE, provided that the server has not set a 'Cache-Control:
public' header field ; 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) { switch (txn->status) {
case 200: case 200:
case 203: case 203:
case 204:
case 206: case 206:
case 300: case 300:
case 301: case 301:
case 404:
case 405:
case 410: case 410:
/* RFC2616 @13.4: case 414:
* "A response received with a status code of case 501:
* 200, 203, 206, 300, 301 or 410 MAY be stored /* RFC7231#6.1:
* by a cache (...) unless a cache-control * Responses with status codes that are defined as
* directive prohibits caching." * 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: * RFC7234#4:
* A cache MUST write through requests with methods * A cache MUST write through requests with methods