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

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

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

5 ответов

В процентах…

Вы можете использовать @ символ в путях HTTP URI, если вы кодируете его как процент %40,

Многие браузеры будут отображать его как @, но, например, когда вы копируете и вставляете URI в текстовый документ, он будет %40,

... но и напрямую

Вместо процентного кодирования вы можете использовать @ непосредственно в пути HTTP URI.

Смотрите синтаксис для пути 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

пример

Вот пример страницы Википедии:

Как видите, ", (, а также ) символы кодируются в процентах, но @ и _ используется напрямую.

Можете ли вы использовать @-символ в URL? - Да, вы можете!

Обратите внимание, что символ @, шестнадцатеричное значение 40, десятичное значение 64 являются зарезервированными символами для URI. Он используется для таких вещей, как адреса электронной почты в mailto:URI, например mailto:username@somewhere.foo и для передачи имени пользователя и пароля по URI (что является плохой идеей, но возможно): http://username:password@somewhere.foo

Если вам нужен URL с символом @ в пути, вам необходимо его кодировать с помощью так называемой " кодировки URL". Например, вот так: http://somewhere.foo/profile/username%40somewhere.foo

Все современные браузеры будут отображать это как http://somewhere.foo/profile/username@somewhere.foo, и будут преобразовывать любые набранные @-sign в %40, так что он прост в использовании.

Многие веб-фреймворки также помогут вам автоматически или с помощью вспомогательных функций преобразовывать URL-адреса в кодировку и из нее.

Итак, в заключение: да, вы можете использовать @-символ в URL, но вы должны убедиться, что он закодирован, так как вы не можете использовать @-символ.

В RFC используются следующие символы:

! * '();: @ & = + $, /? % # []

зарезервированы и:

Назначение зарезервированных символов - предоставить набор символов-разделителей, которые можно отличить от других данных в URI.

Поэтому не рекомендуется использовать эти символы без кодировки.

Я нашел этот вопрос, когда пытался выполнить поиск в Chrome, а затем получил результатThis page isn't working, ts-ignore is currently unable to handle this requestи я увидел, что URL-адрес стал «http://site:typescriptlang.org% /». Я чувствовал себя таким отвергнутым, затем искал@ symbol's function at an URLа потом я нашел свой ответ в Википедии.

Полный формат URL-адресаscheme://userInfo@host:port/path?query#fragment. поэтому, когда мы ищемsite:typescriptlang.org @ts-ignore, браузер подумает, что вы хотите посетить "http://site:typescriptlang.org% [email protected][email protected] /". В этом URL-адресеhttpэто схема,site:typescriptlang.org%20является userInfo ("%20" экранируется пробелом), "ts-ignore/" является хостом. Конечно, мы не можем зайти на хост с именем «ts-ignore» без домена.

Так,@может быть разделителем междуuserInfoиhost.

В основном нет.

@ является зарезервированным символом и должен использоваться только по прямому назначению.

Смотрите: http://perishablepress.com/stop-using-unsafe-characters-in-urls/ и http://www.ietf.org/rfc/rfc3986.txt

Его можно использовать закодировано, но я не думаю, что это то, что вы спрашивали.

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

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