web services - encoding of query string parameters in IE10 -


i got request customer wants able type query string of web service parameters in ie10 address bar , service results. parameters include string in hebrew, like:

http://mywebsite.com/service.asmx/foo?param1=123&param2=מחרוזתבעברית 

it looks me that ie10, unlike other (normal) browsers, won't encode query string parameters - every non-ansi character goes after ? mark turned '3f' byte, though encode goes before ? mark - url itself.

for example, if try reach url (the parameter imaginary, url not, , have no connection site)

http://www.shlomo.co.il/pageshe/sales/רכב-למכירה.asp?param=פאראם  

and in wireshark bytes send server, shows me

wireshark output

you can see substitute hebrew part of url urlencoded string, substitutes hebrew parameters ?????, '3f's.

the same string in chrome encoded in it's entirety:

get http://www.shlomo.co.il/pageshe/sales/%d7%a8%d7%9b%d7%91-%d7%9c%d7%9e%d7%9b%d7%99%d7%a8%d7%94.asp?param=%d7%a4%d7%90%d7%a8%d7%90%d7%9d http/1.1 

i tried on machines win7/ie10 , winxpheb/ie8.

my ie settings (especially checked "always show encoded addresses option" see if helps , restarted, made no difference):

enter image description here

i tried search around info issue, didn't find of it.

my questions are:

  • is indeed this, or missing something?
  • is behavior documented anywhere?
  • are there settings in ie/win enable parameters encoding.

p.s. sure if developing client/web ui, urlencode query, request customer paste query ie address bar, that's why i'm interested in specific behavior.

thanks.

yes, observation of behavior accurate. internet explorer 10 , below follow complicated algorithm encoding url. allegedly updated in internet explorer 11, i've found new option doesn't seem work.

the "always show encoded addresses option" concerns whether punycode shown idn hostnames, , not impact query string. send utf-8 urls applies encoding of path, although can affect other codepaths

the behavior isn't documented anywhere. i'd meant write full post on ieinternals blog ended moving on microsoft before doing so. there's partial explanation in this blog post.

yes, there settings impact behavior. send utf-8 urls checkbox inside tools > internet options > advanced 1 of variables determines how urls sent, option not blindly implies (it utf-8 encodes path, not query string). other variables involved include:

  1. where url typed (e.g. address bar vs. start > run, etc)
  2. what system's ansi codepage (e.g. locale os uses default)
  3. the charset of loaded page in browser

as consequence of these variables, cannot reliably use urls not encoded (e.g. %-escaped utf8) in internet explorer.


Comments

Popular posts from this blog

ios - RestKit 0.20 — CoreData: error: Failed to call designated initializer on NSManagedObject class (again) -

laravel - PDOException in Connector.php line 55: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) -

java - Digest auth with Spring Security using javaconfig -