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

Sudheer Vinukonda updated TS-2650:
----------------------------------

    Description: 
This Jira attempts to enhance/fix multiple issues found with ATS's support for 
redirect follow. Below is a summary of issues:

1. Support relative path in the location header in the 301/302/303 response. 

Description: Currently, if ATS receives a relative url path (with either the 
host or the scheme missing) in the location header in the 302 redirect request, 
it returns a "400 Host Header Required" error. This enhancement is to try the 
redirection with the current origin connection's host/scheme when that happens.

2. Strip off default ports from Host header during redirect follow. 

Description: ATS includes port in the host header as host:port during redirect 
follow. It has been observed that some origins choke (and return 4xx error) 
when the default port (80/http, 443/https) is included within the host header. 
This enhancement is to strip off the default port (80/http, 443/https) from the 
host header during redirect follow. This behavior is controlled via a 
configuration parameter "proxy.config.http.redirect_host_no_port". When 
enabled, ATS will strip off the default port from the host header during 
redirect follow. Note that the default setting for 
proxy.config.http.redirect_host_no_port is disabled, which means, ATS will 
continue to include the port in the host header. 

3. Force DNS lookup during redirect follow

Description: It has been observed that, ATS doesn't perform a DNS lookup during 
redirect follow. This may work when the host is unchanged during redirect 
follow, but, will fail if the host is changed. This fix forces dns lookup 
(either by way of hostdb lookup or an altogether new dns lookup) during 
redirect follow

4. Handle null path correctly during redirect follow

Description: It has been observed that, if a subsequent redirect follow 
includes null path (e.g. /), ATS incorrectly uses the path received during a 
previous redirect request. This fix resets the path during each redirect to 
ensure that the path is correctly set to the newly received value.

5. Cache not working during redirect 

Description: It has been observed that ATS is not writing to cache the final 
response at the end of a successful 3xx redirect follow. This fix is to force 
ATS write to cache a valid non-3xx response received at the end of a redirect 
follow.

6. Support 303 status code to trigger redirect follow

Description: Currently, ATS supports only 301/302 based redirect follow. This 
enhancement is to also handle 303 based redirect follow. Note that, in terms of 
the response and redirect follow handling, 303 handling is identical to 
301/302, except for the status code.

7. SEND_RESPONSE_HDR_HOOK plugin breaks redirect follow:

Description: Currently, when a plugin enables SEND_RESPONSE_HDR_HOOK, ATS has a 
bug that breaks redirect handling. This fix is to allow redirect handling to be 
completed (unto the configured max number of attempts) before invoking the 
plugin with SEND_RESPONSE_HDR_HOOK.

  was:
This Jira attempts to enhance/fix multiple issues found with ATS's support 
redirect follow. Below is a summary of issues:

1. Support relative path in the location header in the 301/302/303 response. 

Description: Currently, if ATS receives a relative url path (with either the 
host or the scheme missing) in the location header in the 302 redirect request, 
it returns a "400 Host Header Required" error. This enhancement is to try the 
redirection with the current origin connection's host/scheme when that happens.

2. Strip off default ports from Host header during redirect follow. 

Description: ATS includes port in the host header as host:port during redirect 
follow. It has been observed that some origins choke (and return 4xx error) 
when the default port (80/http, 443/https) is included within the host header. 
This enhancement is to strip off the default port (80/http, 443/https) from the 
host header during redirect follow. This behavior is controlled via a 
configuration parameter "proxy.config.http.redirect_host_no_port". When 
enabled, ATS will strip off the default port from the host header during 
redirect follow. Note that the default setting for 
proxy.config.http.redirect_host_no_port is disabled, which means, ATS will 
continue to include the port in the host header. 

3. Force DNS lookup during redirect follow

Description: It has been observed that, ATS doesn't perform a DNS lookup during 
redirect follow. This may work when the host is unchanged during redirect 
follow, but, will fail if the host is changed. This fix forces dns lookup 
(either by way of hostdb lookup or an altogether new dns lookup) during 
redirect follow

4. Handle null path correctly during redirect follow

Description: It has been observed that, if a subsequent redirect follow 
includes null path (e.g. /), ATS incorrectly uses the path received during a 
previous redirect request. This fix resets the path during each redirect to 
ensure that the path is correctly set to the newly received value.

5. Cache not working during redirect 

Description: It has been observed that ATS is not writing to cache the final 
response at the end of a successful 3xx redirect follow. This fix is to force 
ATS write to cache a valid non-3xx response received at the end of a redirect 
follow.

6. Support 303 status code to trigger redirect follow

Description: Currently, ATS supports only 301/302 based redirect follow. This 
enhancement is to also handle 303 based redirect follow. Note that, in terms of 
the response and redirect follow handling, 303 handling is identical to 
301/302, except for the status code.

7. SEND_RESPONSE_HDR_HOOK plugin breaks redirect follow:

Description: Currently, when a plugin enables SEND_RESPONSE_HDR_HOOK, ATS has a 
bug that breaks redirect handling. This fix is to allow redirect handling to be 
completed (unto the configured max number of attempts) before invoking the 
plugin with SEND_RESPONSE_HDR_HOOK.


> Redirect handling enhancements in ATS
> -------------------------------------
>
>                 Key: TS-2650
>                 URL: https://issues.apache.org/jira/browse/TS-2650
>             Project: Traffic Server
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Sudheer Vinukonda
>            Assignee: Bryan Call
>             Fix For: 5.0.0
>
>
> This Jira attempts to enhance/fix multiple issues found with ATS's support 
> for redirect follow. Below is a summary of issues:
> 1. Support relative path in the location header in the 301/302/303 response. 
> Description: Currently, if ATS receives a relative url path (with either the 
> host or the scheme missing) in the location header in the 302 redirect 
> request, it returns a "400 Host Header Required" error. This enhancement is 
> to try the redirection with the current origin connection's host/scheme when 
> that happens.
> 2. Strip off default ports from Host header during redirect follow. 
> Description: ATS includes port in the host header as host:port during 
> redirect follow. It has been observed that some origins choke (and return 4xx 
> error) when the default port (80/http, 443/https) is included within the host 
> header. This enhancement is to strip off the default port (80/http, 
> 443/https) from the host header during redirect follow. This behavior is 
> controlled via a configuration parameter 
> "proxy.config.http.redirect_host_no_port". When enabled, ATS will strip off 
> the default port from the host header during redirect follow. Note that the 
> default setting for proxy.config.http.redirect_host_no_port is disabled, 
> which means, ATS will continue to include the port in the host header. 
> 3. Force DNS lookup during redirect follow
> Description: It has been observed that, ATS doesn't perform a DNS lookup 
> during redirect follow. This may work when the host is unchanged during 
> redirect follow, but, will fail if the host is changed. This fix forces dns 
> lookup (either by way of hostdb lookup or an altogether new dns lookup) 
> during redirect follow
> 4. Handle null path correctly during redirect follow
> Description: It has been observed that, if a subsequent redirect follow 
> includes null path (e.g. /), ATS incorrectly uses the path received during a 
> previous redirect request. This fix resets the path during each redirect to 
> ensure that the path is correctly set to the newly received value.
> 5. Cache not working during redirect 
> Description: It has been observed that ATS is not writing to cache the final 
> response at the end of a successful 3xx redirect follow. This fix is to force 
> ATS write to cache a valid non-3xx response received at the end of a redirect 
> follow.
> 6. Support 303 status code to trigger redirect follow
> Description: Currently, ATS supports only 301/302 based redirect follow. This 
> enhancement is to also handle 303 based redirect follow. Note that, in terms 
> of the response and redirect follow handling, 303 handling is identical to 
> 301/302, except for the status code.
> 7. SEND_RESPONSE_HDR_HOOK plugin breaks redirect follow:
> Description: Currently, when a plugin enables SEND_RESPONSE_HDR_HOOK, ATS has 
> a bug that breaks redirect handling. This fix is to allow redirect handling 
> to be completed (unto the configured max number of attempts) before invoking 
> the plugin with SEND_RESPONSE_HDR_HOOK.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to