У меня есть форма с method="get"
. В форме я должен передать URL файла CSS, но это кодирует его к http%3A%2F%2Fwww...
и т.д.
Есть ли способ остановить кодирование URL, поскольку это повреждает файл.
Спасибо
Это немного сложнее, чем может показаться на первый взгляд. Для любого URL-адреса, который является определенной формой стандарта URI, определенные символы являются специальными. К специальным символам относятся :
(разделитель схем) и /
(разделитель пути или иерархии), вот полный список зарезервированных символов из RFC-2396 :
зарезервировано = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ","
Это имеет мало общего с безопасностью, а скорее просто следование стандарту: эти символы означают что-то особенное в любом URI, URL или URN. Когда вам нужно использовать их как часть пути или строки запроса (запрос GET создает для вас строку запроса), вам нужно избежать их. Краткий вариант экранирования: возьмите байты UTF-8 как шестнадцатеричные и поставьте перед ними знак %
. В случае зарезервированных символов это всегда однобайтовый символ в UTF-8 и, следовательно, экранированный двумя шестнадцатеричными цифрами.
Вернуться к вашей проблеме. Вы не упомянули, какой язык вы используете. Но любой язык, который работает с Интернетом, имеет способ кодирования или декодирования URL-адресов. У некоторых есть вспомогательные функции для декодирования всего URL-адреса, но обычно лучше разбить его на пары имя / значение, а затем декодировать. Это даст вам абсолютный URL-путь, который вам нужен.
Примечание: лучше всего всегда декодировать значения запроса, просто потому что, когда люди вводят значение, они не будут знать, зарезервировано ли это значение, и браузер закодирует его за вас. В противном случае возникает угроза безопасности.
РЕДАКТИРОВАТЬ: Когда вам нужно декодировать на странице, а не на стороне сервера, вам понадобится JavaScript для выполнения этой работы. Взгляните на эту страницу для en / декодирования URL-адресов или воспользуйтесь Google, чтобы найти множество других.
Нет, по соображениям безопасности вы не можете этого сделать. Вы должны собрать и расшифровать его на принимающей стороне.
Нет, вы не можете. Кодировка необходима для создания корректного URL.
Вместо этого, декодируйте значение в вашем коде получения (на какой платформе вы находитесь, декодирование URL обычно выполняется автоматически)