Facing issues with special characters in url in dispatcher

Avatar

Avatar

p0990m

Avatar

p0990m

p0990m

25-01-2021

Hi All, We are sending some data through the query parameter in url which has some special characters like { },[], ". Example url : /content/abc/test.html?data={"title":"Get%20a%20Quote%20-%20Compare%20Plans%20and%20Prices","travelers":[{"age":20,"sameAddress":true,"tripCost":300}]}. converted url - /content/abc/test.html?data=%7b%2522title%2522:%2522Get%2520a%2520Quote%2520-%2520Compare%2520Plans%2520and%2520Prices%2522.... In our QA publish url it is working fine, but in the dispatcher url these special characters  are getting converted into their hex-code equivalent. So can you please do let me know what rewrite rules and which file we do need to write in dispatcher to avoid those special characters to getting converted to their hex-code?

Accepted Solutions (1)

Accepted Solutions (1)

Avatar

Avatar

kiranparab

Avatar

kiranparab

kiranparab

27-01-2021

Hi,

 

Avoid encoding dispatcher URLs -

 
Rewrite rules on Apache web server that attempt to redirect to URLs with special characters such as & or ? or #anchor aren't being redirected properly.  For example:
RewriteRule ^/we-retail.html /we-retail.html#anchor [R=301,L]
 
To avoid encoding the # character, add the NE flag to the rewrite rules:
 
RewriteRule ^/test.html /test.html#anchor [NE,R=301,L]
 
Special characters such as & and ?, will be converted to their hexcode equivalent. Using the [NE] flag prevents that from happening.
RewriteRule ^/anchor/(.+) /bigpage.html#$1 [NE,R]
 
The above example will redirect /anchor/xyz to /bigpage.html#xyz. Omitting the [NE] will result in the # being converted to its hexcode equivalent, %23, which will then result in a 404 Not Found error condition.
 
 
Thanks,
Kiran Parab

Answers (3)

Answers (3)

Avatar

Avatar

lucian_nicolaescu

Avatar

lucian_nicolaescu

lucian_nicolaescu

04-02-2021

The short, right answer for the question itself is the apache rewrite NE flag.

The long answer... is that you shouldn't send JSON objects in URLs for many many reasons. Some options:

1. Use a POST

2. Save that JSON in the browser session or local storage and read it on the next page.

3. At least transform that JSON in "normal" URL params and pass that...

 

Avatar

Avatar

kunal23

MVP

Avatar

kunal23

MVP

kunal23
MVP

25-01-2021

I recommend you to pass the JSON object in request body not in query params. And use POST method for these type of requests. 

Avatar

Avatar

BrianKasingli

MVP

Avatar

BrianKasingli

MVP

BrianKasingli
MVP

25-01-2021

@p0990m,

Within your httpd.conf, you can try to add:

 

AddDefaultCharset utf-8

 

Making sure you have utf-8 encoding enabled.