Які спеціальні символи безпечно використовувати в URL?


14

Які спеціальні символи безпечно використовувати в URL?


3
Набагато швидше і простіше буде запитати, які спеціальні символи небезпечні для використання в URL-адресі (відповідно до відповіді Андреаса Боніні нижче).
Марк Хаттон

2
На питання про те, що небезпечно, так само важко відповісти: будь-який персонаж, який не стосується асоцій, повинен бути закодований у відсотках.
нео

2
@neo: ні, це не так: O
Томас Боніні

Відповіді:


10

Безпечними символами є az, AZ, 0-9 та _ - (підкреслення та мінус), що крім зарезервованих символів, які використовуються для параметрів.

Інші персонажі будуть створювати проблеми в якійсь мірі. Приклад: якщо один параметр є масивом, ?param=array[content]тобто показуватиме URL-адресу, котрий зашифровано квадратні дужки, які виглядають некрасиво і неможливо продиктувати.

Але проблема не лише в тому, що це некрасиво, скажімо, у вас є jpg із символом поруч із безпечнішими, багато разів браузер не зможе його завантажити, отримуючи 404. Це проблема старих браузерів та деяких мобільних браузерів.

Як це перевірити?

  • розмістіть купу зображень / js / css з символами, які ви хочете перевірити, в іменах на загальнодоступній сторінці з багатьма відвідувачами
  • Зробіть сторінку 404 надсилати вам електронний лист кожного разу, коли він потрапляє

У мене вхідні 14000 електронних листів, що підтверджують мою думку.


5
ну замість "безпечних персонажів" я б сказав "надзвичайно безпечні персонажі" - специфікація дозволяє більше, але я згоден з вами, що тут краще бути консервативним.
Джефф Етвуд

2
Що не так з періодом?
BlueWhale

12

Наступні символи мають особливе значення в компоненті шляху вашої URL-адреси (компонент шляху - це все до '?'):

  ";" | "/" | "?"

Крім них, наступні символи мають особливе значення у частині запиту вашої URL-адреси (все після '?'). Тому, якщо вони після '?' вам потрібно уникнути їх:

  ":" | "@" | "&" | "=" | "+" | "$" | ","

Для більш поглибленого пояснення див. RFC .


3
Звичайно, лише для наочності ця відповідь є протилежною питання. Питання задає питання про те, які персонажі безпечні, а не ті, які небезпечні. Оскільки важко відповісти на оригінальне запитання, напевно, це питання слід, мабуть, відредагувати, щоб задати його навпаки і відповідати цій відповіді.
Марк Хаттон

3

Відповіді тут хороші, але є ще один виняток, який, на мою думку, варто згадати - неанглійські символи. Посилаючись на це питання SF , такі символи, як ñ (як в Español), є абсолютно законними, якщо вони були правильно закодовані у вашому DNS.

Вам потрібно використовувати Punycode у вашому DNS, щоб дозволити їх розв’язувати у сучасних браузерах (запис для español є xn--espaol-zwa), але вони тепер цілком безпечні для використання в доменних іменах, оскільки їх легко вводити і немовцям, які не говорять на англійській мові. .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.