Как я могу остановиться, браузер от кодирующих URL значений формы на ДОБИРАЮТСЯ

У меня есть форма с method="get". В форме я должен передать URL файла CSS, но это кодирует его к http%3A%2F%2Fwww... и т.д.

Есть ли способ остановить кодирование URL, поскольку это повреждает файл.

Спасибо

12
задан Abel 1 June 2010 в 11:18
поделиться

3 ответа

Предпосылки

Это немного сложнее, чем может показаться на первый взгляд. Для любого URL-адреса, который является определенной формой стандарта URI, определенные символы являются специальными. К специальным символам относятся : (разделитель схем) и / (разделитель пути или иерархии), вот полный список зарезервированных символов из RFC-2396 :

 зарезервировано = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
 "$" | "," 

Это имеет мало общего с безопасностью, а скорее просто следование стандарту: эти символы означают что-то особенное в любом URI, URL или URN. Когда вам нужно использовать их как часть пути или строки запроса (запрос GET создает для вас строку запроса), вам нужно избежать их. Краткий вариант экранирования: возьмите байты UTF-8 как шестнадцатеричные и поставьте перед ними знак % . В случае зарезервированных символов это всегда однобайтовый символ в UTF-8 и, следовательно, экранированный двумя шестнадцатеричными цифрами.

Путь к решению

Вернуться к вашей проблеме. Вы не упомянули, какой язык вы используете. Но любой язык, который работает с Интернетом, имеет способ кодирования или декодирования URL-адресов. У некоторых есть вспомогательные функции для декодирования всего URL-адреса, но обычно лучше разбить его на пары имя / значение, а затем декодировать. Это даст вам абсолютный URL-путь, который вам нужен.

Примечание: лучше всего всегда декодировать значения запроса, просто потому что, когда люди вводят значение, они не будут знать, зарезервировано ли это значение, и браузер закодирует его за вас. В противном случае возникает угроза безопасности.

РЕДАКТИРОВАТЬ: Когда вам нужно декодировать на странице, а не на стороне сервера, вам понадобится JavaScript для выполнения этой работы. Взгляните на эту страницу для en / декодирования URL-адресов или воспользуйтесь Google, чтобы найти множество других.

13
ответ дан 2 December 2019 в 07:02
поделиться

Нет, по соображениям безопасности вы не можете этого сделать. Вы должны собрать и расшифровать его на принимающей стороне.

2
ответ дан 2 December 2019 в 07:02
поделиться

Нет, вы не можете. Кодировка необходима для создания корректного URL.

Вместо этого, декодируйте значение в вашем коде получения (на какой платформе вы находитесь, декодирование URL обычно выполняется автоматически)

6
ответ дан 2 December 2019 в 07:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: