Почему URL-адрес в двойных кавычках закодирован как% 22? - PullRequest
0 голосов
/ 29 мая 2020

Насколько мне известно, кодировка URL-адресов существует, потому что URL-адреса поддерживают только кодировку ASCII. Но поскольку " уже находится в таблице ASCII, почему он должен быть закодирован как %22 в кодировке URL?

Ответы [ 2 ]

4 голосов
/ 29 мая 2020

Символ " подпадает под раздел 2.2 (Проблемы с кодировкой символов URL) RF C 1738 (Унифицированные указатели ресурсов) в разделе «Небезопасный». Причина включения:

Кавычки (""") используются для разграничения URL-адресов в некоторых системах.

Один случай, который я могу придумать of - это атрибут HTML. Например, если у вас есть тег <a> с атрибутом href, вы, скорее всего, заключите URL-адрес в двойные кавычки. Если символ " не заключен в кавычки, тег становится недействительным:

<a href="https://example.com/this"should-be-quoted">...</a>

RF C также продолжает говорить:

Все небезопасные символы всегда должны быть закодировано в URL.

Некоторые примеры других небезопасных символов:

Символы "<" и ">" небезопасны, потому что они используются в качестве разделителей вокруг URL-адресов в произвольном тексте.

символ "%" небезопасен, потому что он используется для кодирования других символов.

Символ "#" небезопасен и всегда должен кодироваться, потому что он используется во всемирной паутине и в других системах для ограничения URL из идентификатора фрагмента / привязки, который может следовать за ним.

1 голос
/ 29 мая 2020

URL-адреса поддерживают только кодировку ASCII

Это неправда. URL-адреса не поддерживают пробелы или /, & или ?, например, даже если они являются действительными символами ASCII, поскольку имеют особое значение в URL-адресах.

Допустимые символы в URL-адресах:

  • AZ
  • az
  • 0-9
  • -
  • _
  • .
  • ~

Другие символы не поддерживаются. Некоторые из них, например пробелы и табуляции, не поддерживаются, поскольку они имеют особое значение в протоколах, которые обычно используют URL-адреса, такие как HTTP. Другие, например ? и &, не поддерживаются, потому что они имеют особое значение в синтаксисе URL.

...