Karakter khusus apa yang aman untuk digunakan di url?

13

Karakter khusus apa yang aman untuk digunakan di url?

KAMU
sumber
2
Akan jauh lebih cepat dan lebih mudah untuk menanyakan karakter khusus mana yang tidak aman untuk digunakan dalam URL (sesuai jawaban Andreas Bonini di bawah).
Mark Hatton
2
Menanyakan apa yang tidak aman sama sulitnya untuk dijawab: Setiap karakter non-ascii perlu dikodekan persen.
neo
2
@neo: tidak, tidak: O
Thomas Bonini

Jawaban:

10

Karakter yang aman adalah az, AZ, 0-9, dan _ - (garis bawah dan minus), selain karakter khusus yang digunakan untuk parameter.

Karakter lain akan memberikan masalah pada tingkat tertentu. contoh: jika satu parameter adalah array ?param=array[content]yaitu akan menampilkan url dengan kurung siku yang disandikan, yang terlihat jelek dan tidak mungkin didikte.

Tetapi masalahnya bukan hanya itu jelek, katakanlah Anda memiliki jpg dengan karakter di samping yang lebih aman, berkali-kali browser tidak dapat mengunduhnya, mendapatkan 404. Ini adalah masalah browser yang lebih lama dan beberapa browser seluler.

Bagaimana cara menguji ini?

  • letakkan banyak gambar / js / css dengan karakter yang ingin Anda uji dalam nama di halaman publik dengan banyak pengunjung
  • Buat halaman 404 mengirimi Anda email setiap kali mendapat hit

Saya memiliki kotak masuk dengan 14000 email yang membuktikan maksud saya.

Disintegrator
sumber
5
baik, daripada "karakter yang aman" Saya akan mengatakan "karakter yang sangat aman" - spesifikasi memungkinkan lebih banyak, tetapi saya setuju dengan Anda bahwa lebih baik bersikap konservatif di sini.
Jeff Atwood
2
Apa yang salah dengan titik?
BlueWhale
11

Karakter berikut memiliki arti khusus dalam komponen jalur URL Anda (komponen jalur adalah segalanya sebelum '?'):

  ";" | "/" | "?"

Selain itu, karakter berikut memiliki makna khusus di bagian permintaan URL Anda (semuanya setelah '?'). Karena itu, apakah mereka mengejar '?' Anda perlu melarikan diri dari mereka:

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

Untuk penjelasan yang lebih mendalam, lihat RFC .

Thomas Bonini
sumber
3
Tentu saja, hanya untuk kejelasan, jawaban ini adalah kebalikan dari pertanyaan. Pertanyaannya menanyakan karakter mana yang aman, bukan yang tidak aman. Karena sulit untuk menjawab pertanyaan asli dengan kuat, pertanyaan mungkin harus diedit untuk menanyakan sebaliknya dan cocok dengan jawaban ini.
Mark Hatton
3

Jawabannya bagus, tapi ada satu lagi pengecualian yang menurut saya layak disebut - karakter non-Inggris. Referensi pertanyaan SF ini di sini , karakter seperti ñ (seperti dalam Español) adalah sah, JIKA mereka telah dikodekan dalam DNS Anda dengan benar.

Anda harus menggunakan Punycode dalam DNS Anda untuk membuatnya diselesaikan di browser modern (entri untuk español adalah xn--espaol-zwa) tetapi ini sekarang sangat aman untuk digunakan dalam nama domain, karena mudah untuk non-bahasa Inggris-speaker untuk mengetik juga .

Mark Henderson
sumber