mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-21 11:58:03 +00:00
72cffaf440
In case of successful unsafe method on a stored resource, the cached entry must be invalidated (see RFC7234#4.4). A "non-error response" is one with a 2xx (Successful) or 3xx (Redirection) status code. This implies that the primary hash must now be calculated on requests that have an unsafe method (POST or PUT for instance) so that we can disable the corresponding entries when we process the response.
67 lines
1.6 KiB
Plaintext
67 lines
1.6 KiB
Plaintext
varnishtest "A successful unsafe method (POST for instance) on a cached entry must disable it."
|
|
|
|
#REQUIRE_VERSION=2.3
|
|
|
|
feature ignore_unknown_macro
|
|
|
|
server s1 {
|
|
rxreq
|
|
expect req.url == "/cached"
|
|
txresp -hdr "Cache-Control: max-age=5" \
|
|
-bodylen 150
|
|
|
|
rxreq
|
|
expect req.url == "/cached"
|
|
expect req.method == "POST"
|
|
txresp
|
|
|
|
rxreq
|
|
expect req.url == "/cached"
|
|
txresp -hdr "Cache-Control: max-age=5" \
|
|
-bodylen 100
|
|
|
|
} -start
|
|
|
|
haproxy h1 -conf {
|
|
defaults
|
|
mode http
|
|
${no-htx} option http-use-htx
|
|
timeout connect 1s
|
|
timeout client 1s
|
|
timeout server 1s
|
|
|
|
frontend fe
|
|
bind "fd@${fe}"
|
|
default_backend test
|
|
|
|
backend test
|
|
http-request cache-use my_cache
|
|
server www ${s1_addr}:${s1_port}
|
|
http-response cache-store my_cache
|
|
http-response set-header X-Cache-Hit %[res.cache_hit]
|
|
|
|
cache my_cache
|
|
total-max-size 3
|
|
max-age 20
|
|
max-object-size 3072
|
|
} -start
|
|
|
|
|
|
client c1 -connect ${h1_fe_sock} {
|
|
txreq -url "/cached"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.bodylen == 150
|
|
|
|
txreq -method "POST" -url "/cached" -bodylen 100
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.X-Cache-Hit == 0
|
|
|
|
txreq -url "/cached"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.bodylen == 100
|
|
expect resp.http.X-Cache-Hit == 0
|
|
} -run
|