Apakah url seperti http://example.com/foo?bar
valid?
Saya mencari tautan ke sesuatu yang resmi yang mengatakan satu atau lain cara. Jawaban ya / tidak sederhana atau bukti anekdotal tidak akan memotongnya.
Apakah url seperti http://example.com/foo?bar
valid?
Saya mencari tautan ke sesuatu yang resmi yang mengatakan satu atau lain cara. Jawaban ya / tidak sederhana atau bukti anekdotal tidak akan memotongnya.
Jawaban:
The URI RFC tidak mandat format untuk string. Meskipun diakui bahwa string kueri akan sering membawa pasangan nama-nilai, string tersebut tidak diharuskan (misalnya akan sering berisi URI lain).
3.4. Pertanyaan
Komponen kueri berisi data non-hierarkis yang, bersama dengan data dalam komponen jalur (Bagian 3.3), berfungsi untuk mengidentifikasi sumber daya dalam lingkup skema URI dan otoritas penamaan (jika ada). ...
... Namun, karena komponen kueri sering digunakan untuk membawa informasi pengidentifikasian dalam bentuk pasangan "key = value" dan satu nilai yang sering digunakan adalah referensi ke URI lain, ...
HTML menetapkan bahwa formulir yang dikirimkan melalui HTTP GET harus menyandikan nilai formulir sebagai pasangan nama-nilai dalam formulir "? Key1 = value1 & key2 = value2 ..." (disandikan dengan benar). Parsing string kueri hingga ke kode sisi server (mis. Mesin Java servlet).
Anda tidak mengidentifikasi kerangka sisi server apa yang Anda gunakan, jika ada, tetapi ada kemungkinan bahwa kerangka sisi server Anda dapat menganggap string kueri akan selalu berada dalam pasangan nilai-nama dan mungkin tersedak pada string kueri yang tidak dalam format itu (mis ?bar
.). Jika kode kustom Anda sendiri menguraikan string kueri, Anda hanya perlu memastikan Anda menangani format string kueri itu. Jika ini kerangka kerja, Anda harus berkonsultasi dengan dokumentasi Anda atau cukup mengujinya untuk melihat bagaimana penanganannya.
isindex
magic name
dari HTML5 memungkinkan mengirimkan query string tanpa kunci-nilai Format stackoverflow.com/a/37579004/895245
Mereka benar-benar valid. Anda bisa menganggap mereka setara dengan pria berotot besar yang berdiri diam di belakang pembawa pesan massa. Pria itu tidak memiliki nama dan tidak berbicara, tetapi kehadirannya hanya menyampaikan informasi.
"Skema" http "digunakan untuk menemukan sumber daya jaringan melalui protokol HTTP. Bagian ini mendefinisikan sintaks dan semantik khusus skema untuk URL http." http://www.w3.org/Protocols/rfc2616/rfc2616.html
http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]
Jadi ya, semuanya valid setelah tanda tanya. Server Anda mungkin menafsirkan secara berbeda, tetapi secara anekdot , Anda dapat melihat beberapa bahasa memperlakukannya sebagai nilai boolean yang benar jika terdaftar.
Satu-satunya bagian yang relevan dari spesifikasi URI adalah untuk mengetahui segala sesuatu antara yang pertama ?
dan yang pertama #
sesuai dengan definisi permintaan. Itu dapat menyertakan karakter seperti [:/.?]
. Ini berarti bahwa string kueri seperti ?bar
, atau ?ten+green+apples
valid.
Temukan RFC 3986 di sini
isindex
tidak berarti HTML5.
Ini disediakan usang untuk digunakan sebagai elemen pertama dalam bentuk saja, dan mengirimkan tanpa nama.
Jika nama entri adalah "isindex", jenisnya adalah "teks", dan ini adalah entri pertama dalam kumpulan data formulir, lalu tambahkan nilai untuk hasil dan lewati sisa dari subteps untuk entri ini, pindah ke yang berikutnya entri, jika ada, atau langkah selanjutnya dalam keseluruhan algoritma sebaliknya.
Bendera isindex hanya untuk penggunaan sebelumnya. Formulir sesuai dokumen HTML tidak akan menghasilkan muatan yang perlu diterjemahkan dengan set bendera ini.
Isindex terakhir kali didukung adalah HTML3 . Ini digunakan dalam HTML5 adalah untuk memberikan kompatibilitas mundur lebih mudah.
Dukungan di perpustakaan untuk format URI ini bervariasi namun beberapa perpustakaan memang menyediakan dukungan warisan untuk memudahkan penggunaan isindex
.
Beberapa perpustakaan seperti Perl URI menyediakan metode parsing struktur semacam ini
$uri->query_keywords
$uri->query_keywords( $keywords, ... )
$uri->query_keywords( \@keywords )
Sets and returns query components that use the keywords separated by "+" format.
url
(tidak ada dukungan khusus)Sebagai contoh lain yang jauh lebih sering, node.js
mengambil rute normal dan memudahkan penguraian juga
parseQueryString
)Sebagian besar parsing URI API lainnya mengikuti sesuatu yang mirip dengan ini.
parse_url
, mengikuti implementasi serupa tetapi hanya mengembalikan string untuk kueri. Mengurai menjadi objek k=>v
membutuhkanparse_string()
Itu valid: lihat Wikipedia , RFC 1738 (3.3. HTTP) , RFC 3986 (3. Komponen Sintaks) .
isindex
sihir usang name
dari HTML5
Fitur usang ini memungkinkan pengiriman formulir untuk menghasilkan URL seperti itu, memberikan bukti lebih lanjut bahwa itu valid untuk HTML. Misalnya:
<form action="#isindex" class="border" id="isindex" method="get">
<input type="text" name="isindex" value="bar"/>
<button type="submit">Submit</button>
</form>
menghasilkan URL jenis:
?bar
Standar: https://www.w3.org/TR/html5/forms.html#naming-form-controls:-the-name-attribute
isindex
Namun sudah usang seperti yang disebutkan di: https://stackoverflow.com/a/41689431/895245
Seperti semua jawaban lain yang dijelaskan, ini sangat valid untuk memeriksa, khususnya untuk hal-hal baik boolean
Berikut adalah fungsi sederhana untuk mendapatkan string kueri berdasarkan nama:
function getParameterByName(name, url) {
if (!url) {
url = window.location.href;
}
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
dan sekarang Anda ingin memeriksa apakah string kueri yang Anda cari ada atau tidak, Anda dapat melakukan hal sederhana seperti:
var exampleQueryString = (getParameterByName('exampleQueryString') != null);
yang exampleQueryString
akan false
jika fungsi tidak dapat menemukan string, jika tidak akan true
.