@marcel91200 / caddy Mirror · read-only / commits / 3b19aa2b
Fork 0

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{