Quali caratteri speciali sono sicuri da usare in url?


13

Quali caratteri speciali sono sicuri da usare in url?


2
Sarebbe molto più veloce e più semplice chiedere quali caratteri speciali non sono sicuri da usare in un URL (secondo la risposta di Andreas Bonini di seguito).
Mark Hatton,

2
È difficile rispondere a ciò che non è sicuro: qualsiasi carattere non ASCII deve essere codificato in percentuale.
neo

2
@neo: no, no: O
Thomas Bonini,

Risposte:


10

I caratteri sicuri sono az, AZ, 0-9 e _ - (trattino basso e meno), che oltre ai caratteri riservati utilizzati per i parametri.

Altri personaggi daranno problemi in una certa misura. esempio: se un parametro è un array, ?param=array[content]cioè mostrerà un url con l'URL codificato tra parentesi quadre, che sembra brutto e impossibile da dettare.

Ma il problema non è solo brutto, diciamo che hai un jpg con un personaggio oltre a quelli più sicuri, molte volte il browser non sarà in grado di scaricarlo ottenendo un 404. Questo è un problema dei browser più vecchi e di alcuni browser mobili.

Come testarlo?

  • metti un sacco di immagini / js / css con i personaggi che vuoi testare nei nomi in una pagina pubblica con molti visitatori
  • Fai in modo che la pagina 404 ti invii un'email ogni volta che ottiene un successo

Ho una casella di posta con 14000 e-mail che dimostrano il mio punto.


5
beh, invece di "personaggi sicuri", direi "personaggi estremamente sicuri" - le specifiche consentono di più, ma sono d'accordo con te sul fatto che è meglio essere prudenti qui.
Jeff Atwood,

2
Cosa c'è che non va nel periodo?
BlueWhale

11

I seguenti caratteri hanno un significato speciale nel componente path del tuo URL (il componente path è tutto prima del '?'):

  ";" | "/" | "?"

Oltre a questi, i seguenti caratteri hanno un significato speciale nella parte della query del tuo URL (tutto dopo '?'). Pertanto, se sono dopo il '?' devi scappare da loro:

  ":" | "@" | "&" | "=" | "+" | "$" | ","

Per una spiegazione più approfondita, consultare RFC .


3
Naturalmente, solo per chiarezza, questa risposta è l'opposto della domanda. La domanda chiede quali personaggi siano al sicuro, non quelli che non sono sicuri. Dal momento che è difficile rispondere alla domanda originale in modo efficace, la domanda dovrebbe probabilmente essere modificata per farla viceversa e abbinare questa risposta.
Mark Hatton,

3

Le risposte qui sono buone, ma penso che valga la pena menzionare un'altra eccezione: i caratteri non inglesi. Facendo riferimento a questa domanda SF qui , caratteri come ñ (come in Español) sono perfettamente legittimi, SE sono stati codificati correttamente nel tuo DNS.

Devi usare Punycode all'interno del tuo DNS per farli risolvere nei browser moderni (la voce per español è xn--espaol-zwa) ma questi ora sono perfettamente sicuri da usare nei nomi di dominio, in quanto sono facili da scrivere anche per chi non parla inglese .

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.