Могу ли я использовать символ (@) внутри URL?
Можно ли использовать символ @
как часть пользователя? Например, возможный URL-адрес будет http://example.com/@dave
.
Идея состоит в том, что в настоящее время пользователей обычно называют "@user", поэтому почему бы не сделать страницу пользователя "@username"?
Ответы
Ответ 1
Процент-кодированный...
Вы можете использовать символ @
в путях HTTP URI, если percent-encode это как %40
.
Многие браузеры покажут его как @
, но, например, когда вы копируете и вставляете URI в текстовый документ, это будет %40
.
... но также непосредственно
Вместо процентного кодирования, вы можете использовать @
непосредственно в пути URI HTTP.
См. синтаксис для пути URI. Различные отброшенные предложения в стороне, путь может состоять из символов в наборах segment
, segment-nz
или segment-nz-nc
. segment
и segment-nz
состоят из символов из набора pchar
, который определяется как:
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
Как вы можете видеть, @
явно указан.
В наборе segment-nz-nc
также явно указан символ @
:
segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" )
Таким образом, HTTP-URI, подобный этому, является полностью допустимым:
http://example.com/@dave
Пример
Вот пример страницы Википедии:
Как вы можете видеть, символы "
, (
и )
имеют процентное кодирование, но напрямую используются @
и _
.
Ответ 2
Можете ли вы использовать @-символ в URL-адресе? - Да, вы можете!
Обратите внимание, что это значение @-character, шестнадцатеричное значение 40, десятичное значение 64, является зарезервированным символом для URI. Это используется для таких вещей, как адреса электронной почты в mailto:
URI, например mailto:[email protected]
, и для передачи информации о имени пользователя и пароле в URI (что плохой идеей, но возможно): http://username:[email protected]
Если вам нужен URL-адрес, который имеет @-символ в пути, который вам нужно закодировать, с так называемым URL-кодированием". Например, например: http://somewhere.foo/profile/username%40somewhere.foo
Все современные браузеры будут отображать это как http://somewhere.foo/profile/[email protected] и преобразуют любые введенные в @-sign в %40
, поэтому их легко использовать.
Многие веб-фреймворки также помогут вам автоматически или с помощью вспомогательных функций конвертировать в URL-адреса URL и из URL-адреса.
Итак, в целом: Да, вы можете использовать @- символ в URL-адресе, но вы должны убедиться, что он закодирован, поскольку вы не можете использовать символ @.
Ответ 3
В RFC следующие символы:
! * '();: @и = + $,/? % # []
зарезервированы и:
Цель зарезервированных символов - предоставить набор разделителей символы, которые отличаются от других данных в URI.
Поэтому не рекомендуется использовать эти символы без кодировки.
Ответ 4
Базовый номер
@
является зарезервированным символом и должен использоваться только по назначению.
Смотрите: http://perishablepress.com/stop-using-unsafe-characters-in-urls/ и http://www.ietf.org/rfc/rfc3986.txt
Его можно использовать в кодировке, но я не думаю, что это то, о чем вы просили.
По-видимому, современные браузеры справятся с этим. Однако вы спросили, безопасно ли это, и в соответствии со спецификацией RFC вы не должны использовать его (unencoded), если это не для его Целевое назначение.