Forum Discussion

Pete_Francois_1's avatar
Pete_Francois_1
Icon for Nimbostratus rankNimbostratus
Aug 10, 2006

HTTPS 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