Apa perbedaan antara HTTP GET dan HTTP POST?

Formulir ini berisi informasi yang berpotensi sensitif, jadi Anda harus menggunakan POST, bukan GET.

DAPATKAN vs. POST

Secara tegas, perbedaan antara GET dan POST terletak pada bagaimana aplikasi ditransfer. Informasi dalam GET ditransmisikan dalam URL. Jika Anda pernah melihat URL yang menyertakan tanda tanya dan simbol persatuan, Anda mencari permintaan GET: example.com/request.php?var1=foo&var2=bar adalah string GET yang mengkodekan variabel "var1" sebagai "foo" dan variabel "var2" sebagai "bar". Informasi POST termasuk dalam tubuh permintaan, dan tidak terlihat dalam string URL (dan karena itu, tidak terlihat oleh pengguna).

Pedoman formal

Secara formal, panduan HTML mengatakan bahwa GET harus digunakan untuk permintaan "idempotent", atau permintaan yang tidak mengubah apa pun. Misalnya, bayangkan halaman Web yang mengembalikan cuaca lokal: "example.com/weather.php?zipcode=12345". Tindakan menyajikan permintaan itu lagi dan lagi tidak mengubah apa pun. POST harus digunakan untuk aplikasi yang tidak idempoten. Misalnya, Anda melakukan pembelian dengan kartu kredit Anda. Menyajikan permintaan itu berulang kali dapat menyebabkan perubahan yang cukup besar. Karena mengirim ulang permintaan POST memiliki konsekuensi (meskipun kecil), browser web biasanya membuat permintaan muncul bagi pengguna untuk mengonfirmasi bahwa mereka benar-benar ingin mengirimkan kembali formulir permintaan.

Keuntungan dari GET

GET memiliki sejumlah keunggulan dibandingkan POST. Karena GET dikodekan sebagai bagian dari URL, Anda dapat memotong dan menempel URL dan membagikannya dengan orang lain. DAPATKAN permintaan juga dapat ditandai. Jika Anda memeriksa waktu secara berkala, Anda dapat menambahkan "example.com/weather.php?zipcode=12345" ke bilah "Favorit" pada browser Anda, jadi ketika Anda mengeklik tautan itu, Anda secara otomatis memuat halaman cuaca khusus Anda. Karena permintaan GET terlihat (dan dapat diedit) oleh pengguna, mereka juga bisa dibajak. Misalnya, jika situs cuaca tidak menawarkan cara yang jelas untuk mengubah lokasi permintaan cuaca, Anda dapat mengubah "12345" ke "99762" secara manual untuk melihat cuaca di Nome, Alaska, bukan cuaca di Schenectady.

Kapan menggunakan POST

Bahkan dalam situasi yang idempoten, POST memiliki penggunaan yang jelas sesekali. Beberapa di antaranya didasarkan pada keamanan atau legalitas. Variabel GET ditransmisikan "dengan jelas", karena Anda tidak ingin mengirim informasi tentang kartu kredit, nomor jaminan sosial, kata sandi atau informasi pengguna rahasia melalui GET. Karena data POST menjadi lebih gelap, itu lebih baik dalam situasi tersebut. POST juga digunakan untuk transmisi data dalam jumlah besar, bahkan jika datanya tidak sensitif. Secara teknis, URL (dan karena itu GET variabel) dapat memiliki panjang yang tidak terbatas. Namun, karena banyak browser membatasi seberapa banyak ruang yang dapat dimiliki URL, GET umumnya dianggap memadai hanya untuk permintaan yang relatif singkat.