add proxy remove header by regex support

Signed-off-by: Ronni Skansing <rskansing@gmail.com>
This commit is contained in:
Ronni Skansing
2026-01-30 14:38:09 +01:00
parent 32384e3c21
commit 451b3800cd

View File

@@ -2841,7 +2841,21 @@ func (m *ProxyHandler) applyEarlyRequestHeaderReplacements(req *http.Request, re
m.logger.Errorw("invalid early request_header replacement regex", "error", err)
continue
}
// check if this is a header deletion rule (empty replace)
isDelete := replacement.Replace == ""
// collect headers to delete (can't modify map while iterating)
var headersToDelete []string
for headerName, values := range req.Header {
fullHeader := headerName + ": " + values[0]
if re.MatchString(fullHeader) && isDelete {
// mark header for deletion
headersToDelete = append(headersToDelete, headerName)
continue
}
newValues := make([]string, 0, len(values))
for _, val := range values {
fullHeader := headerName + ": " + val
@@ -2858,6 +2872,11 @@ func (m *ProxyHandler) applyEarlyRequestHeaderReplacements(req *http.Request, re
}
req.Header[headerName] = newValues
}
// delete marked headers
for _, headerName := range headersToDelete {
req.Header.Del(headerName)
}
}
}
}