Возможный побочный эффект при использовании запятой в строке запроса?

Я хотел бы использовать , в значении строки запроса URL, но это зарезервированный символ. Тем не менее, в наши дни мы видим, что многие сайты электронной коммерции дают URL-адреса запятых.

Что мы учитываем, когда используем , в строке запроса? Должен ли он быть закодирован как %2c всегда?

Обратите внимание, что мои серверные платформы - это ASP.NET WebApi, dJango и Node.js.

1 ответ

Решение

Стандарт URI не определяет разделителей для компонента запроса. Таким образом, ни один из зарезервированных символов не играет особой роли, все они представляют данные.

Компонент запроса может содержать следующие символы:

  • a-z, A-Z
  • 0-9
  • /?:@!$&'()*+,;=-._~
  • символы в процентах

Так что вы можете использовать , и / или %2C в компоненте запроса. Обратите внимание, что, а также%2Cне эквивалентны для целей нормализации (потому что,является частью зарезервированного набора).

Все вышеизложенное касается общего синтаксиса URI. Схемы URI могут определять дополнительные разделители (иззарезервированного набора) для определенных компонентов, ноhttp/https Спецификация схемы URI не делает этого для компонента запроса.

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

(Приложения, которые вы используете, могут, конечно, делать что-то конкретное с , в строках запроса, но это не будет ничего особенного в этом символе, это может произойти и с любым другим символом.)

Другие вопросы по тегам