it-swarm-id.com

Karakter khusus apa yang aman untuk digunakan di url?

Karakter khusus apa yang aman untuk digunakan di url?

13
YOU

Karakter yang aman adalah a-z, A-Z, 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 sedikit pun tanda kurung siku yang dikodekan, yang terlihat jelek dan tidak mungkin didikte.

Tapi 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-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.

10

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 .

11
Thomas Bonini

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 bahasa Español) benar-benar sah, JIKA mereka telah dikodekan dalam DNS Anda dengan benar.

Anda harus menggunakan Punycode dalam DNS Anda untuk menyelesaikannya di browser modern (entri untuk español adalah xn--espaol-zwa) tetapi ini sekarang sangat aman untuk digunakan dalam nama domain, karena mereka ' mudah bagi yang bukan penutur bahasa Inggris untuk mengetik juga.

3
Mark Henderson