mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-26 13:43:47 +03:00
intercept: fix http.intercept.header.* placeholder (#6429)
This commit is contained in:
parent
f8861ca16b
commit
0287009ee5
2 changed files with 8 additions and 3 deletions
|
@ -18,17 +18,23 @@ func TestIntercept(t *testing.T) {
|
||||||
|
|
||||||
localhost:9080 {
|
localhost:9080 {
|
||||||
respond /intercept "I'm a teapot" 408
|
respond /intercept "I'm a teapot" 408
|
||||||
|
header /intercept To-Intercept ok
|
||||||
respond /no-intercept "I'm not a teapot"
|
respond /no-intercept "I'm not a teapot"
|
||||||
|
|
||||||
intercept {
|
intercept {
|
||||||
@teapot status 408
|
@teapot status 408
|
||||||
handle_response @teapot {
|
handle_response @teapot {
|
||||||
|
header /intercept intercepted {resp.header.To-Intercept}
|
||||||
respond /intercept "I'm a combined coffee/tea pot that is temporarily out of coffee" 503
|
respond /intercept "I'm a combined coffee/tea pot that is temporarily out of coffee" 503
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`, "caddyfile")
|
`, "caddyfile")
|
||||||
|
|
||||||
tester.AssertGetResponse("http://localhost:9080/intercept", 503, "I'm a combined coffee/tea pot that is temporarily out of coffee")
|
r, _ := tester.AssertGetResponse("http://localhost:9080/intercept", 503, "I'm a combined coffee/tea pot that is temporarily out of coffee")
|
||||||
|
if r.Header.Get("intercepted") != "ok" {
|
||||||
|
t.Fatalf(`header "intercepted" value is not "ok": %s`, r.Header.Get("intercepted"))
|
||||||
|
}
|
||||||
|
|
||||||
tester.AssertGetResponse("http://localhost:9080/no-intercept", 200, "I'm not a teapot")
|
tester.AssertGetResponse("http://localhost:9080/no-intercept", 200, "I'm not a teapot")
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,7 +50,6 @@ type Intercept struct {
|
||||||
//
|
//
|
||||||
// Three new placeholders are available in this handler chain:
|
// Three new placeholders are available in this handler chain:
|
||||||
// - `{http.intercept.status_code}` The status code from the response
|
// - `{http.intercept.status_code}` The status code from the response
|
||||||
// - `{http.intercept.status_text}` The status text from the response
|
|
||||||
// - `{http.intercept.header.*}` The headers from the response
|
// - `{http.intercept.header.*}` The headers from the response
|
||||||
HandleResponse []caddyhttp.ResponseHandler `json:"handle_response,omitempty"`
|
HandleResponse []caddyhttp.ResponseHandler `json:"handle_response,omitempty"`
|
||||||
|
|
||||||
|
@ -161,7 +160,7 @@ func (ir Intercept) ServeHTTP(w http.ResponseWriter, r *http.Request, next caddy
|
||||||
|
|
||||||
// set up the replacer so that parts of the original response can be
|
// set up the replacer so that parts of the original response can be
|
||||||
// used for routing decisions
|
// used for routing decisions
|
||||||
for field, value := range r.Header {
|
for field, value := range rec.Header() {
|
||||||
repl.Set("http.intercept.header."+field, strings.Join(value, ","))
|
repl.Set("http.intercept.header."+field, strings.Join(value, ","))
|
||||||
}
|
}
|
||||||
repl.Set("http.intercept.status_code", rec.Status())
|
repl.Set("http.intercept.status_code", rec.Status())
|
||||||
|
|
Loading…
Reference in a new issue