[ https://issues.apache.org/jira/browse/TS-2962?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Leif Hedstrom updated TS-2962: ------------------------------ Fix Version/s: (was: 5.2.0) 5.3.0 > header_rewrite default "exists" matcher not working > --------------------------------------------------- > > Key: TS-2962 > URL: https://issues.apache.org/jira/browse/TS-2962 > Project: Traffic Server > Issue Type: Bug > Components: Plugins > Affects Versions: 5.0.1 > Reporter: Nick Muerdter > Assignee: Leif Hedstrom > Priority: Minor > Fix For: 5.3.0 > > > The > [documentation|https://docs.trafficserver.apache.org/en/latest/reference/plugins/header_rewrite.en.html#operands-to-conditions] > for the header_rewrite plugin indicates that if you don't specify a matcher > on a condition, then the matcher checks if a value exists. However, if I'm > understanding the intended behavior correctly, this is not the behavior I'm > seeing. If I don't specify an explicit matcher on the condition, then the > condition never seems to match (at least for http headers). > Here's a simplified example in a stock 5.0.1 installation that should add a > "{{X-Testing}}" header to the response if the "{{Surrogate-Control}}" header > exists on the response: > {code} > cond %{READ_RESPONSE_HDR_HOOK} > cond %{HEADER:Surrogate-Control} > add-header X-Testing Hello [L] > {code} > {code} > $ curl -I "http://localhost:8081/test" > HTTP/1.1 200 OK > X-Powered-By: Express > Surrogate-Control: max-age=60 > Date: Mon, 28 Jul 2014 06:19:43 GMT > Age: 0 > Connection: keep-alive > Server: ATS/5.0.1 > {code} > But as you can see from this response, no such header is added. > If I change the condition to a regex match for one or more characters, then > the header gets added as I expect: > {code} > cond %{READ_RESPONSE_HDR_HOOK} > cond %{HEADER:Surrogate-Control} /.+/ > add-header X-Testing Hello [L] > {code} > {code} > $ curl -I "http://localhost:8081/test" > HTTP/1.1 200 OK > X-Powered-By: Express > Surrogate-Control: max-age=60 > Date: Mon, 28 Jul 2014 06:19:12 GMT > X-Testing: Hello > Age: 0 > Connection: keep-alive > Server: ATS/5.0.1 > {code} > The regex based approach works fine, but it took me a while to realize what > was going on and figure this out (the primary example in the documentation > also seems to be utilizing this "exists" logic so that also doesn't work for > me). > So if the condition without an explicit matcher should check for a variable's > existence, that doesn't seem to be working. Alternatively, if the current > behavior is working as intended, then I think the documentation and examples > might need to be updated (and if that's the case, I'd be happy to take a stab > at that). -- This message was sent by Atlassian JIRA (v6.3.4#6332)