Apakah URI (khususnya URL HTTP) diizinkan mengandung satu atau lebih karakter spasi? Jika URL harus disandikan, apakah +
hanya konvensi yang biasa diikuti, atau alternatif yang sah?
Secara khusus, dapatkah seseorang menunjuk ke RFC yang menunjukkan bahwa URL dengan spasi harus dikodekan?
Motivasi untuk pertanyaan: Selagi menguji beta situs web, saya perhatikan bahwa beberapa URL dibuat dengan spasi di dalamnya. Firefox sepertinya melakukan hal yang benar, yang mengejutkan saya! Tapi saya ingin bisa mengarahkan pengembang ke RFC sehingga mereka akan merasa perlu untuk memperbaiki URL tersebut.
Jawaban:
Sesuai RFC 1738 :
sumber
Mengapa harus dikodekan? Permintaan terlihat seperti ini:
Ada 3 bidang yang dipisahkan oleh ruang putih. Jika Anda menaruh spasi di url Anda:
Anda tahu ada 4 bidang, server HTTP akan memberi tahu Anda itu permintaan yang tidak valid.
3 bidang => valid
Catatan: dalam string kueri (setelah?), Spasi biasanya dikodekan sebagai +
daripada
sumber
Jawaban singkat: tidak, Anda harus menyandikan spasi; itu adalah benar untuk mengkodekan ruang sebagai
+
, tetapi hanya dalam string; di jalan yang harus Anda gunakan%20
.sumber
URL didefinisikan dalam RFC 3986 , meskipun RFC lain juga relevan tetapi RFC 1738 sudah usang.
Mereka mungkin tidak memiliki spasi di dalamnya, bersama dengan banyak karakter lain. Karena karakter terlarang itu sering perlu diwakili, ada skema untuk menyandikannya ke URL dengan menerjemahkannya ke ASCII yang setara dengan heksadesimal dengan awalan "%".
Sebagian besar bahasa pemrograman / platform menyediakan fungsi untuk encoding dan decoding URL, meskipun mereka mungkin tidak mematuhi standar RFC dengan benar. Sebagai contoh, saya tahu PHP tidak.
sumber
Ya, ruang biasanya disandikan ke "% 20". Setiap parameter yang lolos ke URL harus disandikan, hanya untuk alasan keamanan.
sumber
URL dapat memiliki Karakter Luar Angkasa di dalamnya dan mereka akan ditampilkan sebagai% 20 di sebagian besar browser, tetapi aturan penyandian browser sering berubah dan kita tidak bisa bergantung pada bagaimana browser akan menampilkan URL.
Jadi Alih-alih, Anda dapat mengganti Karakter Luar Angkasa di URL dengan karakter apa pun yang menurut Anda akan membuat URL Lebih Mudah Dibaca dan 'Cukup';) ..... O, jadi karakter umum yang disukai adalah "-", "_", "+" .... tetapi ini bukan kompulsi sehingga Anda dapat menggunakan karakter apa pun yang tidak seharusnya ada di URL.
Harap hindari%, &,}, {,], [, /,>, <sebagai Pengganti Karakter Ruang URL karena mereka dapat melakukan kesalahan pada browser dan Platform tertentu.
Seperti yang Anda lihat, Stak overflow sendiri menggunakan karakter '-' sebagai pengganti Space (% 20).
Selamat bertanya.
sumber
URL tidak boleh memiliki ruang di dalamnya. Jika Anda perlu alamat yang benar, gunakan nilainya yang dikodekan
%20
sumber
URI, dan dengan demikian URL, didefinisikan dalam RFC 3986.
Jika Anda melihat tata bahasa yang didefinisikan di sana, Anda pada akhirnya akan mencatat bahwa karakter spasi tidak pernah dapat menjadi bagian dari URL yang secara sintaksis legal, sehingga istilah "URL dengan spasi" adalah kontradiksi dalam dirinya sendiri.
sumber
Untuk menjawab pertanyaan Anda. Saya akan mengatakan itu cukup umum untuk aplikasi untuk mengganti spasi dalam nilai yang akan digunakan dalam URL. Alasannya adalah untuk menghindari pengkodean URI yang semakin sulit dibaca.
Lihat artikel wikipedia ini tentang Persen-penyandian .
sumber
Firefox 3 akan menampilkan
%20
s dalam URL sebagai spasi di bilah alamat.sumber
"Is a URL allowed to contain a space?"
. Bukan komentar.