[ 
https://issues.apache.org/jira/browse/TS-2962?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alan M. Carroll updated TS-2962:
--------------------------------

    Fix Version/s:     (was: 5.1.0)
                   5.2.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.2.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.2#6252)

Reply via email to