Forum Discussion
Tom_Lauwereins_
Mar 28, 2011Nimbostratus
TargetURL issue
I have an issue with "target URL"
When goiing to https://www.foo.com/abc
The webserver is redirecting for authenticating to https://www.foo.com/login.jsp?targetURL=http://www.foo.com/abc
Is it possible to rewrite the URL (via iRules) so the target URL is https://www.foo.com/abc instead of http://www.foo.com/abc
Now it happens on an apache with 'proxypassreverse'
Any suggestion?
Tom
- The_BhattmanNimbostratusHi Tom,
when HTTP_RESPONSE { set $find "http://www.foo.com/abc" set $replace "https://www.foo.com/abc" if {[HTTP::is_redirect] and [HTTP::header value Location] contains "?targetURL=http://www.foo.com/abc"} { HTTP::header replace Location [string map -nocase [-list $find $replace ] [HTTP::header value Location]] } }
- Tom_Lauwereins_NimbostratusA got an error:
- Joel_MosesNimbostratus
when HTTP_RESPONSE { set find "http://www.foo.com/abc" set replace "https://www.foo.com/abc" if {[HTTP::is_redirect] and [HTTP::header value Location] contains "?targetURL=http://www.foo.com/abc"} { HTTP::header replace Location [string map -nocase [-list $find $replace ] [HTTP::header value Location]] } }
- JRahmAdminJust remove the dash in front of list:
[string map -nocase [list $find $replace] [HTTP::header value Location]
Also note that the "$" should not be present on the two set commands. In TCL shell:
% set find "http://www.foo.com/abc" http://www.foo.com/abc % set replace "https://www.foo.com/abc" https://www.foo.com/abc % set location "Location: http://www.foo.com/abc/home.html" Location: http://www.foo.com/abc/home.html % string map [list $find $replace] $location Location: https://www.foo.com/abc/home.html
Note that setting the variables not only takes up unnecessary cpu/memory, but it also requires the list command in the string map, which takes extra cpu cyles. Would be better just to define them unless there are multiple potential matches. This would be shortened to:
when HTTP_RESPONSE { if {[HTTP::is_redirect] and [HTTP::header value Location] contains "?targetURL=http://www.foo.com/abc"} { HTTP::header replace Location [string map -nocase {"http://www.foo.com/abc" "https://www.foo.com/abc"} [HTTP::header value Location]] } }
HTH...Jason
- JRahmAdminlooks like Joel beat me to the punch, but you still need to remove the "-" in front of list as well as removing the "$" from the set commands.
Recent Discussions
Related Content
DevCentral Quicklinks
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com
Discover DevCentral Connects