Posso usare un simbolo @ (@) all'interno degli URL?


90

È sicuro utilizzare un @simbolo come parte di un utente? Ad esempio, un possibile URL sarebbe http://example.com/@dave.

L'idea è che, al giorno d'oggi, gli utenti sono comunemente chiamati "@user", quindi perché non rendere la pagina utente "@username"?


2
"gli utenti sono comunemente chiamati @user" - WAT? Ma sì, puoi usare @ in un URL.
Lennart Regebro

1
Penso che non ci sia nulla di sbagliato nell'usare @ nell'URL a meno che non sia correttamente codificato nell'URL.
Praveen

4
@ user1671639: Penso che tu intenda "purché sia ​​codificato correttamente nell'URL".
Lennart Regebro

3
Ho appena notato che Google Maps ora utilizza @ nei suoi URL: google.com/maps/@0,0,2z
Zv_oDD

Risposte:


126

Codifica percentuale ...

Puoi usare il @carattere nei percorsi URI HTTP se lo codifichi in percentuale come %40.

Molti browser lo visualizzerebbero ancora come @, ma ad esempio quando copi e incolli l'URI in un documento di testo, lo sarà %40.

... ma anche direttamente

Invece di codificarlo in percentuale, puoi usarlo @direttamente nel percorso dell'URI HTTP.

Vedere la sintassi per il percorso di un URI. Varie clausole indipendenti parte, il percorso può essere costituito da caratteri nella segment, segment-nzo segment-nz-ncinsieme. segmente segment-nz sono costituiti da caratteri del pcharset, che è definito come:

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

Come puoi vedere, @è elencato esplicitamente.

Il segment-nz-ncset elenca anche il @personaggio in modo esplicito:

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

Quindi, un URI HTTP come questo è totalmente valido:

http://example.com/@dave

Esempio

Ecco un esempio di pagina di Wikipedia:

  • collegamento
  • copia e incolla: http://en.wikipedia.org/wiki/%22@%22_%28album%29

Come si può vedere, i ", (e )personaggi sono cento codifica, ma la @e _viene utilizzato direttamente.


Buone notizie! Ma allora, perché Twitter non lo fa?
Augustin Riedinger

1
@AugustinRiedinger: potresti fornire un URL di esempio? Non uso Twitter e da quello che vedo non usano più @negli URL, ma i vecchi (?) URL del profilo funzionano ancora: esempio con codifica percentuale @( non funziona!) Vs. esempio usando @direttamente (non lavoro!) .
fino al

Interessante! Infatti, funziona con o senza @nel caso di Twitter. I loro link interni fanno riferimento all'URL senza @però: twitter.com/@stackexchange
Augustin Riedinger

1
@RalphCallaway: AFAIK solo i caratteri non riservati sono equivalenti alla loro forma codificata in percentuale , ma @non è senza riserva . Quindi i consumatori non devono assumerlo %40e @sono equivalenti.
fino al

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.Non è vero per Chrome.
Defozo

42

Puoi usare il simbolo @ in un URL? - Sì che puoi!

Si noti che il carattere @, valore esadecimale 40, valore decimale 64, è un carattere riservato per gli URI. Il suo utilizzo è per cose come gli indirizzi e-mail negli mailto:URI, ad esempio mailto:username@somewhere.fooe per il passaggio di informazioni su nome utente e password su un URI (che è una cattiva idea, ma possibile):http://username:password@somewhere.foo

Se vuoi un URL che ha un simbolo @ in un percorso devi codificarlo, con la cosiddetta " codifica URL ". Ad esempio in questo modo:http://somewhere.foo/profile/username%40somewhere.foo

Tutti i browser moderni visualizzeranno questo come http://somewhere.foo/profile/username@somewhere.foo e convertiranno qualsiasi digitato in @ -sign in %40, quindi è facile da usare.

Molti web framework ti aiuteranno anche automaticamente, o con funzioni di aiuto, a convertire da e verso URL codificati in URL.

Quindi, in sintesi: Sì, puoi usare il simbolo @ in un URL, ma devi assicurarti che sia codificato, poiché non puoi usare il carattere @ .


+1 perfetto. Invece di basarsi sulla teoria, meglio provare. Questa è la cosa che volevo dire, grazie per aver reso questa bella risposta.
Praveen

4
Sebbene la codifica non sia un cattivo consiglio, i @caratteri non "hanno bisogno" di essere codificati nella parte del percorso di un URL ( greenbytes.de/tech/webdav/rfc3986.html#path )
brianreavis

11

Nella RFC i seguenti caratteri:

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

sono riservati e:

Lo scopo dei caratteri riservati è fornire un set di caratteri di delimitazione che siano distinguibili da altri dati all'interno di un URI.

Quindi non è consigliabile utilizzare questi caratteri senza codifica.


-3

Fondamentalmente no.

@ è un carattere riservato e deve essere utilizzato solo per lo scopo previsto.

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

Può essere usato codificato, ma non credo che sia quello che stavi chiedendo.

Apparentemente i browser moderni lo gestiranno. Tuttavia hai chiesto se questo era sicuro e secondo le specifiche della RFC non dovresti usarlo (non codificato) a meno che non sia per lo scopo previsto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.