Replace HTTP refresh with HTTP Redirect
Problem this snippet solves:
Intercepts pages with HTTP REFRESH and re-writes as a proper 302 redirect response.
Special handling or an alternate approach may be required to preserve any cookies or other custom headers returned by the server.
Code :
# iRule to convert meta refresh statements to 302s
when HTTP_REQUEST {
set meta "meta HTTP-EQUIV=\"REFRESH\""
# Don't allow data to be chunked
if { [HTTP::version] eq "1.1" } {
if { [HTTP::header is_keepalive] } {
HTTP::header replace "Connection" "Keep-Alive"
}
HTTP::version "1.0"
}
}
when HTTP_RESPONSE {
# grab the response
if { [HTTP::header exists "Content-Length"] } {
set content_length [HTTP::header "Content-Length"]
} else {
set content_length 1000000
}
if { $content_length > 0 } {
HTTP::collect $content_length
}
}
when HTTP_RESPONSE_DATA {
# look for Meta Refresh
if {[string tolower [HTTP::payload]] contains $meta }{
# look for refresh URL
set urlresponse [findstr [string tolower [HTTP::payload]] "URL=" 4 {">}]
if { $urlresponse != "" } {
# pull URL out of URL Tag in Meta Refresh statement
# respond with 302
HTTP::respond 302 Location $urlresponse
}
}
}Published Mar 18, 2015
Version 1.0Deb_Allen_18
Historic F5 Account
Joined September 25, 2004
Deb_Allen_18
Historic F5 Account
Joined September 25, 2004
No CommentsBe the first to comment