Forum Discussion
Tobias_Neumeyer
Nimbostratus
Jun 29, 2009iRule / uri parameter manipulation
Hi,
Sorry, but I need some help from some experts again.
I'm trying to write an iRule which modifies a post request to the server.
This is the example request.
https://wss01.sharepoint.mydomain.com/Job%20Requisition%20and%20Management/_layouts/searchresults.aspx?k=eula&u=https%3A%2F%2Fwss01%2Esharepoint%2Emydomain%2Ecom%2FJob%20Requisition%20and%20Management
What I'm trying to do is to modify the parameter "u=https" to "u=http" only if the uri contains "/searchresults.aspx" before it is send to the server. The Hosts can be diffrent as well.
Thank you very much advance
Tobias
- hoolio
Cirrostratus
Hi Tobias,when HTTP_REQUEST { Check if path ends with /searchresults.aspx if {[string tolower [HTTP::path]] ends_with "/searchresults.aspx"}{ Rewrite URI for u=http:// to u=https:// HTTP::uri [string map -nocase {u=http:// to u=https://} [HTTP::uri] log local0. "[IP::client_addr]:[TCP::client_port]: Updated query string to [HTTP::query]" } }
- Tobias_Neumeyer
Nimbostratus
Hi Aaron, - hoolio
Cirrostratus
Sorry, bad copying and pasting on my part. I was also missing a closing square brace after HTTP::uri. You can remove the "to" in the middle. And actually, if you're on a version lower than 9.4.7, you should replace the curly braces with double quotes to avoid a bug (SOL7988 - Click here).when HTTP_REQUEST { Check if path ends with /searchresults.aspx if {[string tolower [HTTP::path]] ends_with "/searchresults.aspx"}{ Rewrite URI for u=http:// to u=https:// HTTP::uri [string map -nocase "u=http:// u=https://" [HTTP::uri]] log local0. "[IP::client_addr]:[TCP::client_port]: Updated query string to [HTTP::query]" } }
- hoolio
Cirrostratus
Is the update actually being made in the request to the server? Maybe it's a problem with caching of the HTTP:: commands. I thought using HTTP::query would have shown the update. Can you try logging in a second HTTP_REQUEST event?when HTTP_REQUEST { Check if path ends with /searchresults.aspx if {[string tolower [HTTP::path]] ends_with "/searchresults.aspx"}{ Rewrite URI for u=https:// to u=http:// HTTP::uri [string map -nocase "u=https:// u=http://" [HTTP::uri]] log local0. "[IP::client_addr]:[TCP::client_port]: Updated query string to [HTTP::query]" } } when HTTP_REQUEST priority 501 { log local0. "[IP::client_addr]:[TCP::client_port]: 501 Updated query string to [HTTP::query]" }
- hoolio
Cirrostratus
Is the change actually being made to the requested URI? If you check the server logs or run tcpdump on the server VLAN, do you see the URI being rewritten?
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