Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS
Mirrored from https://github.com/Slazee/caddy.git
Synced Nov 13, 01:45 UTC
headers: Allow `>` to defer shortcut for replacements (#5574)
Francis Lavoie committed
Jun 15, 2023 at 19:18 UTC
3b19aa2b5a77440f8cb4d11e80937935d187f1cd
2 files changed
+20
-1
caddytest/integration/caddyfile_adapt/header.txt
+15
@@ -18,6 +18,7 @@
18
+Link "Bar"
19
}
20
header >Set Defer
21
+ header >Replace Deferred Replacement
22
}
23
----------
24
{
@@ -148,6 +149,20 @@
149
]
150
}
151
}
152
+ },
153
+ {
154
+ "handler": "headers",
155
+ "response": {
156
+ "deferred": true,
157
+ "replace": {
158
+ "Replace": [
159
+ {
160
+ "replace": "Replacement",
161
+ "search_regexp": "Deferred"
162
+ }
163
+ ]
164
+ }
165
+ }
166
}
167
]
168
}
modules/caddyhttp/headers/caddyfile.go
+5
-1
@@ -247,10 +247,14 @@ func applyHeaderOp(ops *HeaderOps, respHeaderOps *RespHeaderOps, field, value, r
247
respHeaderOps.Set.Set(field, value)
248
249
case replacement != "": // replace
250
+ // allow defer shortcut for replace syntax
251
+ if strings.HasPrefix(field, ">") && respHeaderOps != nil {
252
+ respHeaderOps.Deferred = true
253
+ }
254
if ops.Replace == nil {
255
ops.Replace = make(map[string][]Replacement)
256
}
253
- field = strings.TrimLeft(field, "+-?")
257
+ field = strings.TrimLeft(field, "+-?>")
258
ops.Replace[field] = append(
259
ops.Replace[field],
260
Replacement{