Apa artinya% 5B dan% 5D dalam permintaan POST?

266

Saya mencoba menulis kelas Java untuk masuk ke situs web tertentu. Data yang dikirim dalam permintaan POST untuk login adalah

user%5Blogin%5D=username&user%5Bpassword%5D=123456

Saya ingin tahu apa %5Bdan %5Dartinya di login pengguna utama .

Bagaimana cara menyandikan data ini?

Rakib Ansary
sumber

Jawaban:

482

Sesuai jawaban ini di sini : str='foo%20%5B12%5D'mengkodekan foo [12]:

%20 is space
%5B is '['
and %5D is ']'

Ini disebut pengodean persen dan digunakan dalam pengodean karakter khusus dalam nilai parameter url.

EDIT Ngomong-ngomong ketika saya sedang membaca https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURI#Description , hanya terpikir oleh saya mengapa begitu banyak orang melakukan pencarian yang sama. Lihat catatan di bagian bawah halaman:

Juga perhatikan bahwa jika seseorang ingin mengikuti RFC3986 yang lebih baru untuk URL, membuat tanda kurung siku disediakan (untuk IPv6) dan dengan demikian tidak dikodekan ketika membentuk sesuatu yang bisa menjadi bagian dari URL (seperti host), berikut ini dapat membantu.

function fixedEncodeURI (str) {
    return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']');
}

Semoga ini akan membantu orang memilah masalah mereka ketika mereka menemukan pertanyaan ini.

Boris Strandjev
sumber
1
Terima kasih banyak untuk itu
Rakib Ansary
@TacticalCoder: ya, terima kasih. Ini bahasa Inggris saya yang buruk. Memperbaiki itu segera.
Boris Strandjev
Tautan RFC3986 Anda rusak
DudeOnRock
30

Mereka mewakili [dan ]. Pengkodean disebut "URL encoding" .

ruakh
sumber
13

[]diganti dengan %5B%5Dpada waktu penyandian URL.

Lalit Bhudiya
sumber
10

Yah itu penyandian url yang biasa

Jadi mereka berdiri untuk [masing-masing]

Voo
sumber
3

Untuk melihat sekilas, Anda dapat persen-en / decode menggunakan alat online ini .

Krzysztof Przygoda
sumber
1
Meskipun tautan ini dapat menjawab pertanyaan, lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini dan memberikan tautan untuk referensi. Jawaban hanya tautan dapat menjadi tidak valid jika halaman tertaut berubah. - Dari Ulasan
Peter
@ Peter Terima kasih, tapi ini hanya tautan ke alat online, yang bisa membantu di sini. Karena jawaban sudah diberikan, tidak perlu penjelasan lebih lanjut.
Krzysztof Przygoda
1

Data mungkin telah diposting awalnya dari formulir web yang terlihat sedikit seperti ini (tapi mungkin jauh lebih rumit):

<form action="http://example.com" method="post">

  User login    <input name="user[login]"    /><br />
  User password <input name="user[password]" /><br />

  <input type="submit" />
</form>

Jika metode "get" bukan "post", mengklik tombol kirim akan membawa Anda ke URL yang terlihat seperti ini:

http://example.com/?user%5Blogin%5D=username&user%5Bpassword%5D=123456

atau:

http://example.com/?user[login[=username&user[password[=123456

Server web di ujung lain kemungkinan akan mengambil user[login]dan user[password]parameter, dan membuatnya menjadi userobjek dengan logindan passwordbidang yang berisi nilai-nilai itu.

mwfearnley
sumber
0

Tidak kalah pentingnya adalah mengapa simbol-simbol ini muncul di url. Lihat https://www.php.net/manual/en/function.parse-str.php#76792 , khususnya:

parse_str('foo[]=1&foo[]=2&foo[]=3', $bar);

di atas menghasilkan:

$bar = ['foo' => ['1', '2', '3'] ];

dan apa metode THE untuk memisahkan vars permintaan dalam array (dalam php, setidaknya).

bbe
sumber