Posso usar um símbolo arroba (@) em URLs?


90

É seguro usar um @símbolo como parte de um usuário? Por exemplo, um possível URL seria http://example.com/@dave.

A ideia é que, hoje em dia, os usuários sejam comumente chamados de "@usuario", então por que não tornar a página do usuário "@nomedeusuario"?


2
"usuários são comumente chamados de @ usuário" - WAT? Mas sim, você pode usar @ em um URL.
Lennart Regebro,

1
Acho que não há nada de errado em usar @ no url, a menos que esteja corretamente codificado no url.
Praveen

4
@ user1671639: Eu acho que você quer dizer "contanto que seja corretamente codificado por url".
Lennart Regebro,

3
Acabei de notar que o google maps agora está usando @ em seus URLs: google.com/maps/@0,0,2z
Zv_oDD

Respostas:


126

Codificado em porcentagem…

Você pode usar o @caractere em caminhos URI HTTP se você codificá- lo por cento como %40.

Muitos navegadores ainda o exibiriam como @, mas, por exemplo, quando você copiar e colar o URI em um documento de texto, ele será %40.

… Mas também diretamente

Em vez de codificá-lo por cento, você pode usar @diretamente no caminho URI HTTP.

Consulte a sintaxe para o caminho de um URI. Vários cláusulas independentes de lado, o caminho pode consistir de caracteres no segment, segment-nzou segment-nz-ncconjunto. segmente segment-nz consistem em personagens do pcharconjunto, que é definido como:

pchar = unreserved / pct-encoded / sub-delims / ":" / "@"

Como você pode ver, o @está listado explicitamente.

O segment-nz-ncconjunto também lista o @caractere explicitamente:

segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" )

Portanto, um URI HTTP como este é totalmente válido:

http://example.com/@dave

Exemplo

Aqui está um exemplo de página da Wikipedia:

  • ligação
  • copiar e colar: http://en.wikipedia.org/wiki/%22@%22_%28album%29

Como você pode ver, as ", (e )caracteres são codificados por cento, mas o @e _é usado diretamente.


Boas notícias! Mas então, por que o Twitter não faz isso?
Augustin Riedinger

1
@AugustinRiedinger: Você poderia fornecer um URL de exemplo? Eu não uso o Twitter e, pelo que vejo, eles não usam mais @em URLs, mas os antigos (?) URLs de perfil ainda funcionam: exemplo com codificação percentual @( não funciona!) Vs. exemplo usando @diretamente (funciona trabalho!) .
unor

Interessante! Na verdade, funciona com ou sem @no caso do Twitter. Seus links internos referem-se ao url sem @entretanto: twitter.com/@stackexchange
Augustin Riedinger

1
@RalphCallaway: AFAIK apenas caracteres não reservados são equivalentes à sua forma codificada por cento , mas o @não é cancelado . Portanto, os consumidores não devem presumir isso %40e @são equivalentes.
unor

1
Many browsers would display it still as @, but e.g. when you copy-and-paste the URI into a text document, it will be %40.Isso não é verdade para o Chrome.
Defozo

43

Você pode usar o símbolo @ em uma URL? - Sim, você pode!

Observe que @ -character, valor hexadecimal 40, valor decimal 64, é um caractere reservado para URIs. Seu uso é para coisas como endereços de e-mail em mailto:URIs, por exemplo, mailto:username@somewhere.fooe para passar informações de nome de usuário e senha em um URI (o que é uma má ideia, mas possível):http://username:password@somewhere.foo

Se você quiser uma URL que tenha um símbolo @ em um caminho, você precisa codificá-la, com a chamada " codificação de URL ". Por exemplo, assim:http://somewhere.foo/profile/username%40somewhere.foo

Todos os navegadores modernos exibirão isso como http://somewhere.foo/profile/username@somewhere.foo , e converterão qualquer entrada digitada em @ -sign para %40, portanto, é fácil de usar.

Muitos web-frameworks também irão ajudá-lo automaticamente, ou com funções auxiliares, a converter de e para URLs codificados por URL.

Portanto, em resumo: Sim, você pode usar o símbolo @ em uma URL, mas deve ter certeza de que está codificado, pois não é possível usar o símbolo @ .


+1 perfeito. Em vez de recorrer à teoria, é melhor tentar. Isso é o que eu quis dizer, obrigado por dar essa resposta tão agradável.
Praveen,

4
Embora a codificação não seja um conselho ruim, os @caracteres não "precisam" ser codificados na parte do caminho de um url ( greenbytes.de/tech/webdav/rfc3986.html#path )
brianreavis

11

No RFC, os seguintes caracteres:

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

são reservados e:

O objetivo dos caracteres reservados é fornecer um conjunto de caracteres delimitadores que podem ser distinguidos de outros dados em um URI.

Portanto, não é recomendado usar esses caracteres sem codificação.


-3

Basicamente, não.

@ é um caractere reservado e deve ser usado apenas para a finalidade pretendida.

Consulte: http://perishablepress.com/stop-using-unsafe-characters-in-urls/ e http://www.ietf.org/rfc/rfc3986.txt

Pode ser usado codificado, mas não acho que seja isso que você estava perguntando.

Aparentemente, os navegadores modernos lidam com isso. No entanto, você perguntou se isso era seguro e de acordo com as especificações do RFC, você não deveria usá-lo (não codificado) a menos que fosse para o propósito pretendido.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.