0

У меня есть приложение intweb, которое я вызываю с помощью следующего URL-адреса, содержащего 1 параметр.Почему IE11 преобразует мой URL с параметрами?

http://127.0.0.1:8888/?0001=„V‡& 

Когда я ввожу URL-адрес в IE11, он преобразуется в следующее.

http://127.0.0.1:8888/$/?0001=%EF%BF%BD%EF%BF%BDV%EF%BF%BD 

Он работает в Chrome и Opera, который передает параметр в его первоначальной форме в приложение. Любые идеи, как я могу остановить IE11 от преобразования параметра?

Я использую IE11, Delphi 10.1 Berlin и Intraweb 14.0.53.

С уважением, Питер

ответ

1

Non-ASCII символы, такие как и не могут появляться не-закодирован в URL, в RFC 3986 (IRI через RFC 3987 позволяет, но HTTP не использует IRIs). Некоторые символы ASCII также зарезервированы как разделители и не должны отображаться некодированными при использовании для символьных данных.

IE делает правильную вещь. Прежде чем передавать URL-адрес, ограниченные символы должны быть закодированы в байтах (IE использует UTF-8, нет способа указать URL-адрес используемой кодировки), а затем байты должны быть закодированы в процентах в формате %HH.

Ожидается, что веб-сервер отменит этот процесс для получения исходных символов - преобразует %HH последовательностей в байты, а затем расшифровывает байты для символов. Браузер и веб-сервер должны согласовать используемую кодировку. UTF-8 обычно используется, но не всегда. Вместо этого некоторые серверы иностранных стран могут использовать свои собственные локали.

Это часть спецификаций URL и HTTP. Все веб-серверы должны распознавать и декодировать последовательности, закодированные в процентах.

Chrome и Opera должны делать то же самое на сетевом уровне, который делает IE, даже если они не обновляют свои пользовательские интерфейсы, чтобы отразить это. Вы можете использовать сниффер пакетов, например Wirkshark или Fiddler, чтобы точно определить, что каждый браузер фактически передает на веб-сервер.

+0

Благодарим за ответ. Мы проверим IIS. Однако на автономном приложении Intraweb следует не декодировать процентную кодировку, поскольку она действует как веб-сервер? –

+0

Да, это должно быть расшифровка URL-адреса –