Saya memiliki aplikasi web lama yang harus saya dukung (yang tidak saya tulis).
Ketika saya mengisi formulir dan mengirimkan kemudian periksa tab "Jaringan" di Chrome saya melihat "Minta Payload" di mana saya biasanya melihat "Formulir Data". Apa perbedaan antara keduanya dan kapan satu dikirim dan bukan yang lainnya?
Cari di Google, tetapi tidak benar-benar menemukan info yang menjelaskan hal ini (hanya orang yang mencoba mendapatkan aplikasi javascript untuk mengirim "Formulir Data" alih-alih "Minta Payload".
Jawaban:
Permintaan Muatan - atau lebih tepatnya: muatan muatan Permintaan HTTP - adalah data yang biasanya dikirim oleh Permintaan POST atau PUT . Ini bagian setelah header dan
CRLF
dari Permintaan HTTP .Permintaan dengan
Content-Type: application/json
mungkin terlihat seperti ini:Jika Anda mengirimkan ini per AJAX browser hanya menunjukkan kepada Anda apa yang dikirimkan sebagai badan muatan. Hanya itu yang bisa dilakukan karena tidak tahu dari mana data berasal.
Jika Anda mengirimkan Formulir HTML dengan
method="POST"
danContent-Type: application/x-www-form-urlencoded
atauContent-Type: multipart/form-data
permintaan Anda mungkin terlihat seperti ini:Dalam hal ini form-data adalah payload permintaan. Di sini Peramban lebih tahu: ia tahu bahwa bilah adalah nilai dari bidang input foo dari formulir yang dikirimkan. Dan itulah yang ditunjukkan kepada Anda.
Jadi, mereka berbeda dalam hal
Content-Type
tetapi tidak dalam cara data dikirimkan. Dalam kedua kasus, data ada di badan pesan. Dan Chrome membedakan bagaimana data disajikan kepada Anda di Alat Pengembang.sumber
json
ataux-www-form-urlencoded
. Yang pertama mengirimkan data sebagai payload permintaan sementara yang kedua mengkodekannya sebagai permintaan url. Keduanya tampaknya berfungsi dengan baik. Apakah ada alasan untuk memilih salah satu dari mereka? Saya melihat sebagian besar situs web seperti Twitter, Google, Facebook, Stackoverflow menetapkan tipe konten sebagaix-www-form-urlencoded
. Ada alasan khusus?Di Chrome, permintaan dengan 'Tipe-Konten: aplikasi / json' ditampilkan sebagai Minta PayedLoad dan mengirim data sebagai objek json.
Tetapi permintaan dengan 'Jenis-Konten: application / x-www-form-urlencoded' memperlihatkan Data Formulir dan mengirimkan data sebagai Kunci: Pasangan Nilai , jadi jika Anda memiliki array objek dalam satu kunci, maka akan mengempiskan nilai kunci itu:
mengirim
sumber