Кто-нибудь знает способ заставить IIS не кодировать URL
Вы должны кодировать URL. Передача необработанного символа «š» (\xC5\xA1) в заголовке HTTP недопустима. Браузер может исправить ошибку до «%C5%A1» для вас, но если это так, результат не будет отличаться от того, если бы вы просто написали «%C5%A1» в первую очередь.
Включение необработанной буквы «š» в ссылку само по себе не является неправильным, браузер должен кодировать ее в UTF-8 и URL-кодировать в соответствии со спецификацией IRI. Но чтобы убедиться, что это действительно работает, вы должны убедиться, что страница со ссылкой обслуживается в кодировке UTF-8. Опять же, ручное кодирование URL-адресов, вероятно, является самым безопасным.
У меня не было проблем с URL-адресами UTF-8, можете ли вы дать ссылку на пример, который не работает?
у вас есть ссылка на ссылку, где подробно описано, что включает в себя действительный заголовок HTTP?
Канонически RFC 2616. Однако на практике это несколько бесполезно. Критический отрывок:
Слова *TEXT МОГУТ содержать символы из наборов символов, отличных от ISO-8859-1, только если они закодированы в соответствии с правилами RFC 2047.
Проблема в том, что согласно правилам RFC 2047, только «атомы» могут вместить «закодированное слово» 2047. TEXT, в большинстве случаев включенный в HTTP, не может быть атомом. В любом случае, RFC 2047 явно разработан для форматов семейства RFC 822, и хотя HTTP очень похож на формат 822, на самом деле он несовместим; он имеет свою собственную базовую грамматику с тонкими, но существенными отличиями. Ссылка на RFC 2047 в спецификации HTTP не дает никакого представления о том, как можно было бы интерпретировать его каким-либо непротиворечивым образом, и, насколько мне известно, является ошибкой.
В любом случае ни один настоящий браузер не пытается найти способ интерпретировать кодировку RFC 2047 где-либо в своей обработке HTTP. И хотя байты, отличные от ASCII, определяются RFC 2616 как ISO-8859-1, в действительности браузеры могут использовать ряд других кодировок (например, UTF-8 или любую другую кодировку по умолчанию в системе) в различных местах при обработке HTTP. заголовки. Так что полагаться даже на набор символов 8859-1 небезопасно! Не то, чтобы это дало бы вам "š" в любом случае...
person
bobince
schedule
10.02.2009