Я получил запрос от клиента о том, что он хочет ввести строку запроса моей веб-службы с параметрами в адресной строке IE10 и получить результаты обслуживания. Параметры включают строку на иврите, например:
http://mywebsite.com/service.asmx/foo?param1=123¶m2=מחרוזתבעברית
Мне кажется, что IE10, в отличие от других (обычных) браузеров, не будет кодировать параметры строки запроса - каждый неанси-символ, который идет после? метка будет обращена к байту 3f, хотя он кодирует то, что идет до? mark - сам URL.
Например, если я пытаюсь достичь url (параметр мнимый, url нет, и у меня нет связи с сайтом)
http://www.shlomo.co.il/pageshe/sales/רכב-למכירה.asp?param=פאראם
и посмотрите в wirehark для байтов, которые я отправляю на сервер, он показывает мне
Вы можете видеть, что он заменяет ивритную часть URL с помощью строки с urlencoded, но заменяет ивритские параметры с символами "3f".
Эта же строка в chrome будет закодирована в ней целиком:
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
Я попробовал это на машинах с win7/IE10 и winXPheb/IE8.
Мои настройки IE (особенно проверены параметр "Всегда показывать кодированные адреса", чтобы узнать, помогает ли он и перезагрузился, но не имеет значения):
Я попытался найти информацию о проблеме, но не нашел ее.
Мои вопросы:
- Действительно ли это так, или я что-то упускаю?
- Является ли это поведение документированным где угодно?
- Существуют ли какие-либо настройки в IE/Win, которые разрешают кодирование параметров.
p.s. Конечно, если бы я разрабатывал client/web ui, я бы просто urlencode мой запрос, но мой запрос от клиента был точно, чтобы вставить запрос в адресную строку IE, поэтому меня интересует это конкретное поведение.
Спасибо.