Forum Discussion
Pete_Francois_1
Nimbostratus
Aug 10, 2006HTTPS POST MODIFY URL SENT TO SERVER WITHOUT REDIRECT
One of our vendors has limited the length of client URL's to 200 characters (in their database). Is there a mechanism on the LTM (v9.2.3) to modify the URI and send the new HTTPS URL to the backend SERVER (node) without performing a redirect?
The problem is that the vendor is preforming an HTTPS POST to
our site, and the POST method does not allow for redirects.
What I need to do is modify the URI that is sent to the server - whithot the client having any knowlegde of the URI being rewritten.
Example:
(short) URL Posted to our site by the client:
https://www.example.com:44300/username=xxx&password=yyy
(long) URL that the server requires:
https://www.example.com:44300/sap/xi/adapter_plain?namespace=urn:example.com:HttpsInTest_v2&interface=HttpInReq_OB&serv
ice=HttpsSenderSvc&username=xxx&password=yyy&sap-client=200&qos=BE
Here is my original attempt at an iRule:
when HTTP_REQUEST {
Put uri into a variable
set uriValue [HTTP::uri]
Set constant string 1, 1st part
set strA "/sap/xi/adapter_plain?namespace=urn:rockwell.com:HttpsInTest_v2&interface=HttpIn
Req_OB&service=HttpsSenderSvc&"
Set constant string 2, 2nd part
set strB "&sap-client=200&qos=BE"
Get the passed username
set username [findstr $uriValue "username=" "0" "&"]
Get the passed password
set password [findstr $uriValue "password=" "0" "&"]
set sep "&"
Set the new url
set newurl "https://www.example.com:44300"
Build the new uri
set newuri [concat $strA$username$sep$password$strB]
Put it all together
set newloc [concat $newurl$newuri]
Log it
log local1.info "Vendor: $newloc"
execute the redirect
HTTP::redirect "$newloc"
}
When I run our test application, I receive the following:
$ java HTTPSPost
Aug 9, 2006 9:51:31 AM org.apache.commons.httpclient.HttpMethodDirector isRedirectNeeded
INFO: Redirect requested but followRedirects is disabled
Posted to: https://www.example.com:44300/username=xxx&password=yyy
Status code: 302
The response returned is below
------------------------------
null
------------------------------
$
1. If I run the same sample application w/o the iRule in place and pass the long URL - it works correctly.
2. I have verified in my logs that the URL/URI is being properly constructed.
So I need a way to send the rewritten httpS URL to the SERVER w/o performing a redirect and without the client having knowledge of
the modification. [sounds like a MIM attack to me :-)]
Does anybody have any ideas?
No RepliesBe the first to reply
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