mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-16 21:56:40 -05:00
caddyhttp: Merge header matchers in Caddyfile (#3832)
This commit is contained in:
parent
b66099379d
commit
966d5e6b42
2 changed files with 38 additions and 1 deletions
|
@ -18,6 +18,13 @@
|
||||||
|
|
||||||
@matcher6 vars_regexp "{http.request.uri}" `\.([a-f0-9]{6})\.(css|js)$`
|
@matcher6 vars_regexp "{http.request.uri}" `\.([a-f0-9]{6})\.(css|js)$`
|
||||||
respond @matcher6 "from vars_regexp matcher without name"
|
respond @matcher6 "from vars_regexp matcher without name"
|
||||||
|
|
||||||
|
@matcher7 {
|
||||||
|
header Foo bar
|
||||||
|
header Foo foobar
|
||||||
|
header Bar foo
|
||||||
|
}
|
||||||
|
respond @matcher7 "header matcher merging values of the same field"
|
||||||
}
|
}
|
||||||
----------
|
----------
|
||||||
{
|
{
|
||||||
|
@ -127,6 +134,27 @@
|
||||||
"handler": "static_response"
|
"handler": "static_response"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"match": [
|
||||||
|
{
|
||||||
|
"header": {
|
||||||
|
"Bar": [
|
||||||
|
"foo"
|
||||||
|
],
|
||||||
|
"Foo": [
|
||||||
|
"bar",
|
||||||
|
"foobar"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"handle": [
|
||||||
|
{
|
||||||
|
"body": "header matcher merging values of the same field",
|
||||||
|
"handler": "static_response"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -408,7 +408,16 @@ func (m *MatchHeader) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
|
||||||
if !d.Args(&field, &val) {
|
if !d.Args(&field, &val) {
|
||||||
return d.Errf("malformed header matcher: expected both field and value")
|
return d.Errf("malformed header matcher: expected both field and value")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If multiple header matchers with the same header field are defined,
|
||||||
|
// we want to add the existing to the list of headers (will be OR'ed)
|
||||||
|
existing := http.Header(*m).Values(field)
|
||||||
|
if len(existing) > 0 {
|
||||||
|
http.Header(*m).Add(field, val)
|
||||||
|
} else {
|
||||||
http.Header(*m).Set(field, val)
|
http.Header(*m).Set(field, val)
|
||||||
|
}
|
||||||
|
|
||||||
if d.NextBlock(0) {
|
if d.NextBlock(0) {
|
||||||
return d.Err("malformed header matcher: blocks are not supported")
|
return d.Err("malformed header matcher: blocks are not supported")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue