2016-11-28 3 views
0

Мне нужно отправить запрос на получение, где последняя часть URL-адреса является значением json. Я кодировал следующие {"period":"600s"} для использования на нескольких разных сайтах, однако все они имеют тот же результат, где : не декодируется.Как кодировать: в URL-адресе?

Закодированный адрес: stickiness=%7B%22period%22%3A%22600s%22%7D.

Ее результат, когда я ввожу его в браузере: enter image description here

Так как же я кодировать :?

ответ

1

%3A кодировка :. : зарезервирован в URI для обозначения номера порта (например, google.com:443 вручную указывает использовать порт 443, порт по умолчанию HTTPS). Если вы хотите включить : в URI, это должно быть precent-sign-encoded, что и есть %3A. Он не может быть декодирован в панели URL, потому что это нарушит зарезервированную цель символа :.

+0

Значит ли это, что я не могу кодировать ':' в URL-адресе или просто работать, но он не будет показывать ':' как сам, а как кодированный символ? – annedroiid

+0

вы можете иметь * только * закодированный ':' ('% 3A'). «просто, что он будет работать, но он не будет показывать: как сам, а как закодированный персонаж». да. – Alexander

+0

Благодарим, мой запрос не работал так, как я ожидал, и я предположил, что причиной является кодировка. Благодаря :) – annedroiid

1

Символ двоеточия не расшифрован в браузере, так как он относится к the reserved characters, который уже имеет явное значение в URL-адресах в другом месте - в этом случае отделяет протокол от имени хоста и порта после имени хоста.

Соответствующий стандарт RFC 1738, страница 3:

Многих схемы URL Оставляют определенные символы для особого смысла: их появления в схему конкретной части URL имеет назначенную семантику. Если символ, соответствующий октету, равен , зарезервированному в схеме, октет должен быть закодирован. Символы «;», «/», «?», «:», «@», «=» И «&» являются символами, которые могут быть зарезервированы для специального значения в рамках схемы. Никакие другие символы не могут быть зарезервированы в рамках схемы.

Обычно URL-адрес имеет одинаковую интерпретацию, когда октет представлен символом и при кодировании. Однако это не true для зарезервированных символов: кодировка символа, зарезервированного для , может привести к изменению семантики URL-адреса.

Таким образом, только буквенно-цифровые, специальные символы "$ -_. +! * '()," И зарезервированные символы, используемые для их зарезервированных целей могут быть использованы Unencoded в URL.