Возможный побочный эффект при использовании запятой в строке запроса?
Я хотел бы использовать ,
в значении строки запроса URL, но это зарезервированный символ. Тем не менее, в наши дни мы видим, что многие сайты электронной коммерции дают URL-адреса запятых.
Что мы учитываем, когда используем ,
в строке запроса? Должен ли он быть закодирован как %2c
всегда?
Обратите внимание, что мои серверные платформы - это ASP.NET WebApi, dJango и Node.js.
1 ответ
Стандарт URI не определяет разделителей для компонента запроса. Таким образом, ни один из зарезервированных символов не играет особой роли, все они представляют данные.
Компонент запроса может содержать следующие символы:
a
-z
,A
-Z
0
-9
/
?
:
@
!
$
&
'
(
)
*
+
,
;
=
-
.
_
~
- символы в процентах
Так что вы можете использовать ,
и / или %2C
в компоненте запроса. Обратите внимание, что,
а также%2C
не эквивалентны для целей нормализации (потому что,
является частью зарезервированного набора).
Все вышеизложенное касается общего синтаксиса URI. Схемы URI могут определять дополнительные разделители (иззарезервированного набора) для определенных компонентов, ноhttp
/https
Спецификация схемы URI не делает этого для компонента запроса.
Возможный побочный эффект (как и со многими другими разрешенными символами) заключается в том, что некоторые алгоритмы автоматического связывания могут работать некорректно.
(Приложения, которые вы используете, могут, конечно, делать что-то конкретное с ,
в строках запроса, но это не будет ничего особенного в этом символе, это может произойти и с любым другим символом.)