Подтвердить что ты не робот

Могу ли я использовать символ (@) внутри URL?

Можно ли использовать символ @ как часть пользователя? Например, возможный URL-адрес будет http://example.com/@dave.

Идея состоит в том, что в настоящее время пользователей обычно называют "@user", поэтому почему бы не сделать страницу пользователя "@username"?

4b9b3361

Ответ 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), если это не для его Целевое назначение.