Posso usar um símbolo no (@) dentro de URLs?

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

A idéia é que, hoje em dia, os usuários são comumente chamados de “@user”, então por que não fazer a página do usuário “@username”?

Por cento codificado…

Você pode usar o caractere @ em caminhos HTTP URI se codificar por %40 como %40 .

Muitos navegadores o exibem como @ , mas, por exemplo, quando você copia e cola o URI em um documento de texto, ele será %40 .

… Mas também diretamente

Em vez de codificar por porcentagem, você pode usar @ diretamente no caminho do URI de HTTP.

Veja a syntax do caminho de um URI. Várias cláusulas não relacionadas à parte, o caminho pode consistir em caracteres no segment , segment-nz ou segment-nz-nc . segment e segment-nz consistem em caracteres do conjunto pchar , que é definido como:

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

Como você pode ver, o @ é listado explicitamente.

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

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

Então, um URI HTTP como este é totalmente válido:

 http://example.com/@dave 

Exemplo

Aqui está um exemplo da página da Wikipédia:

  • binding
  • copiar e colar: http://en.wikipedia.org/wiki/%22@%22_%28album%29

Como você pode ver, os caracteres " , ( e ) são percentualmente codificados, mas o @ e o _ são usados ​​diretamente.

Você pode usar o @ -symbol em um URL? – Sim você pode!

Observe que esse caractere @, valor hexadecimal 40, valor decimal 64, é um caractere reservado para URIs. Seu uso é para coisas como endereços de email em mailto: URI’s, por exemplo mailto:username@somewhere.foo e 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ê quer um URL que tenha um @ -symbol em um caminho, você precisa codificá-lo, com o chamado ” URL-encoding “. 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 typescript em @ -sign em %40 , por isso é fácil de usar.

Muitas estruturas da Web também o ajudarão automaticamente, ou com funções auxiliares, a converter de e para URLs codificadas por URL.

Então, em resumo: Sim, você pode usar o @ -symbol em um URL, mas você precisa ter certeza de que ele está codificado, já que você não pode usar o @ -aractere .

No RFC, os seguintes caracteres:

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

são reservados e:

O objective dos caracteres reservados é fornecer um conjunto de caracteres delimitadores que sejam distinguíveis de outros dados em um URI.

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

Basicamente não.

@ é um caractere reservado e deve ser usado apenas para o propósito pretendido.

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

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

Aparentemente, os navegadores modernos irão lidar 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.