URL encode some character when following redirect

Hello,

I got an error when trying to follow a redirect. The response header location contains this :

https://foo.bar/tms-ts/bin/order-form.cgi?H71bff5861be3a36cfe323fe25954cc93:kid=40.33

And the next HTTP Request is sent on this URL :

https://foo.bar/tms-ts/bin/order-form.cgi?H71bff5861be3a36cfe323fe25954cc93**%3A**kid=40.33

Any idea ?

Thanks

Hi,

This is a typical example of server vendors and framework developers don’t giving a damn about RFCs and browsers coping with it.

See http://en.wikipedia.org/wiki/Query_string#URL_encoding

According to the RFC, your URL should be encoded, and of course your server/application should decode.

Please open an issue and I’ll see if we can add an option for disabling encoding, but I’m pessimistic that this could happen anytime soon (this encoding is done in a third party library).
Honestly, if possible, you should be fixing the problem on your side.

Stéphane

Could you try setting up useRawUrl to true in gatling.conf, please?

Hi, i already tried, nothing changed.

Unfortunately i cannot modify the target system, i will try to simulate the redirection within the gatling script.

Thanks

Which version do you use? My test seemed to work as you expected.

I use the 1.4.5

I checked that the HttpHelper.computeRedirectUrl works well (see test below), it seems that the cause is elsewhere, perhaps in the GatlingAsyncHandlerActor.

“computeRedirectUrl” should {

“properly handle my system” in {

HttpHelper.computeRedirectUrl(“https://foo.bar/tms-ts/bin/order-form.cgi?H71bff5861be3a36cfe323fe25954cc93:kid=400501.33”, “http://foo.bar/test/gateway/pay.asp”) must beEqualTo(“https://foo.bar/tms-ts/bin/order-form.cgi?H71bff5861be3a36cfe323fe25954cc93:kid=400501.33”)

}

}

I have tested with master/Gatling 2:

  • without useRawUrl:

Request DefaultHttpRequest(chunked: false)
GET /tms-ts/bin/order-form.cgi?H71bff5861be3a36cfe323fe25954cc93**%3A**kid=400501.33 HTTP/1.1
Host: localhost:9000
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
DNT: 1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20100101 Firefox/16.0

  • with useRawUrl:

Request DefaultHttpRequest(chunked: false)
GET /tms-ts/bin/order-form.cgi?H71bff5861be3a36cfe323fe25954cc93**:**kid=400501.33 HTTP/1.1
Host: localhost:9000
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
DNT: 1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20100101 Firefox/16.0

So, useRawUrl is properly honored in master and you get the behavior you expect.

I’ll check tomorrow with Gatling 1.4.x.

Cheers,

Stéphane

Wow great, it works with 1.4.5, i missed the # in the config file
Thanks a lot

Great news!