Description
It appears that whitespace causes weird behavior with header_rewrite, for example:
If you remove the white space before the = and the quotes it appears to behave correctly. This whitespace issue is likely to cause strange bugs and needs to be fixed.
cond %{READ_REQUEST_HDR_HOOK} cond %{CLIENT-HEADER:Host} /^localhost$/ [AND] cond %{CLIENT-HEADER:non_existent_header} = "shouldnt_exist_anyway" [AND] add-header X-HeaderRewriteApplied true
With the following request:
curl -v localhost/
Header_rewrite will incorrectly apply the rule:
[Oct 4 20:56:49.245] Server {0x7ffff61b5700} DIAG: (header_rewrite) Building resources, hook=TS_HTTP_READ_REQUEST_HDR_HOOK
[Oct 4 20:56:49.245] Server {0x7ffff61b5700} DIAG: (header_rewrite) Adding TXN client request header buffers
[Oct 4 20:56:49.245] Server {0x7ffff61b5700} DIAG: (header_rewrite) Getting Header: Host, field_loc: 0x7fffd02070d0
[Oct 4 20:56:49.245] Server {0x7ffff61b5700} DIAG: (header_rewrite) Appending HEADER(Host) to evaluation value -> localhost
[Oct 4 20:56:49.245] Server {0x7ffff61b5700} DIAG: (header_rewrite) Test regular expression ^localhost$ : localhost
[Oct 4 20:56:49.245] Server {0x7ffff61b5700} DIAG: (header_rewrite) Successfully found regular expression match
[Oct 4 20:56:49.245] Server {0x7ffff61b5700} DIAG: (header_rewrite) Evaluating HEADER(): localhost - rval: 1
[Oct 4 20:56:49.245] Server {0x7ffff61b5700} DIAG: (header_rewrite) Getting Header: non_existent_header, field_loc: (nil)
[Oct 4 20:56:49.245] Server {0x7ffff61b5700} DIAG: (header_rewrite) Evaluating HEADER(): - rval: 1
[Oct 4 20:56:49.245] Server {0x7ffff61b5700} DIAG: (header_rewrite) OperatorAddHeader::exec() invoked on header X-HeaderRewriteApplied: true
[Oct 4 20:56:49.245] Server {0x7ffff61b5700} DIAG: (header_rewrite) Adding header X-HeaderRewriteApplied
Attachments
Issue Links
- is related to
-
TS-4993 Backslash/escape removed from header_rewrite rule when unquoted
- Closed