Anda sedang menyelesaikan pembelian besar secara online. Anda mengisi detail kartu kredit Anda, mengklik tombol "Bayar Sekarang", dan untuk sesaat, browser Anda mengirimkan permintaan POST dengan semua data sensitif Anda. Tiba-tiba, server perlu mengarahkan Anda ke halaman autentikasi 3D Secure. Apa yang terjadi dengan permintaan POST asli yang berisi informasi pembayaran Anda? Apakah hilang? Apakah dikirim dengan tidak benar?
Skenario kritis ini adalah di mana perbedaan halus antara kode pengalihan HTTP menjadi sangat penting. Ini adalah tugas spesifik dari salah satu kode status yang paling tepat dan berharga: 307 Temporary Redirect.
Meskipun sepupunya 302 Found adalah "pengalihan sementara" yang terkenal, 307 adalah saudaranya yang lebih ketat dan lebih andal. Ini diciptakan untuk menyelesaikan ambiguitas krusial dalam spesifikasi HTTP asli, memastikan bahwa operasi sensitif seperti pembayaran dan pengiriman formulir tidak ditangani dengan tidak benar selama pengalihan.
Ini adalah perbedaan antara instruksi yang tidak jelas seperti "Pergi ke sana" dan perintah yang tepat seperti "Ambil semua yang akan Anda berikan kepada saya dan berikan kepada orang lain itu."
Jika Anda seorang pengembang yang membangun aplikasi web yang tangguh, terutama dengan API yang menangani pembayaran, login, atau pengiriman data, memahami 307 sangat penting.
Dan sebelum kita menyelami detail teknisnya, jika Anda sedang membangun atau menguji API yang melibatkan alur pengalihan yang kompleks, Anda memerlukan alat yang dapat menangani nuansa ini. Unduh Apidog secara gratis; ini adalah platform API lengkap yang memungkinkan Anda dengan mudah menguji berbagai jenis pengalihan, memverifikasi bahwa metode permintaan dipertahankan, dan memastikan jalur kritis aplikasi Anda aman dan andal.
Sekarang, mari kita mulai dan jelajahi segala sesuatu tentang kode status 307 Temporary Redirect.
Masalah: Ambiguitas Pengalihan 302
Untuk memahami 307, kita harus terlebih dahulu memahami cacat yang dirancang untuk diperbaiki. Cerita dimulai dengan pengalihan sementara asli, 302 Found.
Spesifikasi HTTP/1.0 untuk 302 ambigu. Dinyatakan bahwa klien harus melakukan pengalihan, tetapi tidak secara eksplisit mengatakan apakah permintaan yang dialihkan harus menggunakan metode HTTP yang sama (misalnya, POST, PUT) seperti permintaan asli.
Ini menyebabkan masalah: demi alasan keamanan, sebagian besar vendor browser mengimplementasikan 302 dengan mengubah metode permintaan yang dialihkan menjadi GET. Ini masuk akal untuk sebagian besar penjelajahan web dasar tetapi menyebabkan bencana untuk interaksi terprogram atau berbasis API.
Skenario Bencana:
- Klien melakukan
POSTdata formulir ke/submit-payment. - Server merespons dengan
302 Founddan headerLocation: /confirm. - Browser mengikuti pengalihan dengan mengirimkan permintaan GET ke
/confirm. - Data
POSTyang sensitif hilang. Endpoint/confirm, yang mengharapkanGET, mungkin menampilkan halaman tetapi tidak tahu pembayaran apa yang harus dikonfirmasi.
Kode status 307 diperkenalkan dalam HTTP/1.1 untuk menghilangkan ambiguitas berbahaya ini sekali dan untuk selamanya.
Apa Sebenarnya Arti HTTP 307 Temporary Redirect?
Kode status 307 Temporary Redirect adalah instruksi yang jelas dan tidak ambigu. Ini menunjukkan bahwa sumber daya target berada sementara di bawah URI yang berbeda, dan agen pengguna TIDAK BOLEH mengubah metode permintaan yang digunakan dalam permintaan asli saat membuat permintaan yang dialihkan.
Jika permintaan asli adalah POST, permintaan yang dialihkan harus berupa POST. Jika itu adalah PUT, itu harus tetap PUT. Metode dan badan harus identik.
Respons 307 yang khas terlihat seperti ini:
HTTP/1.1 307 Temporary RedirectLocation: <https://auth.example.com/3d-secureContent-Type:> text/htmlContent-Length: 125
<html><head><title>307 Temporary Redirect</title></head><body><center><h1>307 Temporary Redirect</h1></center></body></html>
Kuncinya, seperti semua pengalihan, adalah header Location: <https://auth.example.com/3d-secure>. Keajaibannya ada pada jaminan semantik dari kode status 307 itu sendiri.
Mengapa Pengalihan Ada di HTTP?
Pengalihan ada untuk membantu server dan klien mengkomunikasikan perubahan ketersediaan sumber daya tanpa merusak pengalaman pengguna.
Beberapa skenario umum meliputi:
- Migrasi situs web → Berpindah dari
http://kehttps://. - Pemadaman sementara → Mengarahkan lalu lintas saat server sedang dalam pemeliharaan.
- Pembuatan versi API → Mengirim klien ke endpoint sementara yang lebih baru.
Tanpa pengalihan, pengguna akan melihat pesan kesalahan setiap kali sumber daya berpindah.
307 vs. 302: Perbedaan Kritis
Ini adalah perbedaan yang paling penting. Perbedaannya adalah tentang pemeliharaan metode.
| Fitur | 302 Found |
307 Temporary Redirect |
|---|---|---|
| Spesifikasi Asli | Ambiguitas pada perubahan metode. | Secara eksplisit melarang perubahan metode. |
| Perilaku Browser Umum | Mengubah POST menjadi GET. Ini adalah perbedaan kritis. | Mempertahankan metode asli (POST tetap POST). |
| Keamanan | Tidak aman. Seharusnya tidak digunakan setelah permintaan non-idempoten (seperti POST). | Aman. Dirancang khusus untuk permintaan non-idempoten. |
| Analogi | "Informasi yang Anda kirim telah diterima. Sekarang silakan pergi ke halaman baru ini untuk melihat hasilnya." (Data diserahkan). | "Silakan kirim ulang paket informasi yang sama persis ke alamat baru ini." (Data dialihkan). |
Kapan menggunakan yang mana?
- Gunakan
302 Foundsaat Anda ingin mengalihkan setelah POST tetapi pengiriman data yang sebenarnya sudah selesai, dan pengalihan hanya untuk menampilkan halaman hasil. (Meskipun303 See Otherseringkali lebih baik untuk ini). - Gunakan
307 Temporary Redirectsaat permintaan asli (dan metode/badannya) harus dikirim ulang ke URI yang berbeda untuk menyelesaikan tindakan. Ini umum dalam alur autentikasi, gateway pembayaran, dan rantai API.
Bagaimana 307 Temporary Redirect Bekerja
Berikut adalah alur yang disederhanakan:
1. Klien meminta sumber daya:
POST /checkout HTTP/1.1
Host: shop.example.com
2. Server merespons dengan 307 Temporary Redirect:
HTTP/1.1 307 Temporary Redirect
Location: <https://secure.example.com/checkout>
3. Klien mengulangi permintaan POST di lokasi baru:
POST /checkout HTTP/1.1
Host: secure.example.com
Poin kuncinya: Metode dan badan permintaan dipertahankan.
Contoh Dunia Nyata: Alur Pembayaran
Mari kita telusuri skenario pembayaran untuk melihat 307 beraksi.
1. POST Asli: Pengguna mengirimkan formulir pembayaran. Browser mengirimkan:
POST /checkout/payment HTTP/1.1Host: shop.example.comContent-Type: application/x-www-form-urlencoded
card_number=4111...&expiry=12/25&cvc=123
2. Respons 307 Server: Server toko perlu menyerahkan ke sistem 3D Secure bank. Ini merespons:
HTTP/1.1 307 Temporary RedirectLocation: <https://api.bank.com/3d-secure/authenticate>
3. POST yang Dipertahankan: Browser menerima respons 307. Karena spesifikasinya tidak ambigu, ia tahu harus mengirim ulang permintaan POST yang sama persis dengan badan yang sama persis ke lokasi baru.
POST /3d-secure/authenticate HTTP/1.1Host: api.bank.comContent-Type: application/x-www-form-urlencoded
card_number=4111...&expiry=12/25&cvc=123
4. Hasil Akhir: API bank menerima detail pembayaran secara langsung, melakukan autentikasi, dan kemudian merespons klien dengan langkah-langkah berikutnya (kemungkinan pengalihan 303 atau 302 kembali ke halaman konfirmasi toko).
Alur ini memastikan tidak ada data sensitif yang hilang antara toko dan bank.
Kapan Anda Harus Menggunakan 307 vs 301 atau 302?
- 301 Moved Permanently → Ketika lokasi sumber daya tidak akan pernah berubah lagi.
- 302 Found → Ketika sumber daya sementara berada di tempat lain, tetapi pemeliharaan metode tidak kritis.
- 307 Temporary Redirect → Ketika sumber daya sementara berada di tempat lain, dan Anda harus mempertahankan metode HTTP.
Aturan praktis terbaik:
- Gunakan 301 untuk perubahan permanen.
- Gunakan 307 untuk perpindahan sementara yang melibatkan operasi sensitif (seperti permintaan POST).
Manfaat Menggunakan 307 Temporary Redirect
- Prediktabilitas → Metode permintaan selalu dipertahankan.
- Keamanan → Mencegah penurunan metode yang tidak disengaja (misalnya, POST berubah menjadi GET).
- Kejelasan pengembang → Klien tahu persis perilaku apa yang diharapkan.
Kekurangan dan Kesalahpahaman Umum
- Beberapa klien lama mungkin tidak menangani 307 dengan benar.
- Pengembang terkadang mengacaukan 307 dengan 302, yang menyebabkan perilaku yang tidak diinginkan.
- Profesional SEO kadang-kadang salah menafsirkan 307 sebagai setara dengan 301 — padahal tidak.
307 dan Pengembangan API
Dalam dunia API, 307 memainkan peran penting:
- Memastikan permintaan non-idempoten (seperti POST) tetap konsisten.
- Membantu gateway API mengarahkan lalu lintas dengan aman selama perubahan sementara.
- Menyediakan cara yang aman untuk menangani jendela pemeliharaan.
Tanpa 307, pengembang berisiko klien secara tidak sengaja memodifikasi jenis permintaan.
Menguji Pengalihan 307 dengan Apidog

Menguji perilaku ini sangat penting. Jika Anda sedang membangun atau menguji API, Anda mungkin ingin melihat bagaimana klien Anda menangani respons 307. Anda harus memastikan bahwa klien Anda menangani respons 307 dengan benar dengan mempertahankan metode dan badan. Apidog adalah alat yang sempurna untuk ini.
Dengan Apidog, Anda dapat:
- Membuat Permintaan POST: Dengan mudah menyiapkan permintaan POST dengan badan JSON atau form-data ke endpoint Anda.
- Mensimulasikan Respons 307: Konfigurasikan server mock Anda di Apidog untuk mengembalikan
307 Temporary Redirectdengan headerLocation. - Mengamati Pengalihan Otomatis: Apidog akan secara otomatis mengikuti pengalihan. Uji kuncinya adalah memeriksa log permintaan untuk permintaan kedua. Apakah ia mempertahankan metode POST? Apakah ia mengirimkan badan yang sama persis?
- Membandingkan dengan 302: Jalankan pengujian yang sama tetapi minta mock Anda mengembalikan
302sebagai gantinya. Amati bagaimana Apidog (berperilaku seperti browser standar) mengubah metode menjadi GET dan menghilangkan badan. Demonstrasi visual ini dengan sempurna menggambarkan perbedaannya. - Menguji Klien API: Jika Anda membangun klien API terprogram (misalnya, di Node.js, Python), Anda dapat menggunakan Apidog untuk mensimulasikan server dan memastikan kode klien Anda menangani respons
307dengan benar dengan mempertahankan metode.
Tingkat pengujian ini memastikan bahwa operasi kritis seperti pembayaran dan login tidak akan rusak dalam produksi. Unduh Apidog secara gratis dan coba simulasikan respons 307 hari ini. Ini adalah cara yang bagus untuk menguji aplikasi Anda dalam kondisi pengalihan dunia nyata.
Implikasi SEO dari 307 Temporary Redirect
Dari perspektif SEO:
- 307 memberi tahu mesin pencari bahwa pengalihan bersifat sementara.
- Tidak seperti 301, mesin pencari tidak akan mentransfer ekuitas tautan (PageRank) ke URL baru.
- Ini sempurna untuk pengujian A/B, promosi, atau kampanye jangka pendek.
Jika Anda menggunakan 307 sebagai pengganti 301, Anda berisiko kehilangan manfaat SEO jangka panjang.
307 vs. 308 Permanent Redirect
Sama seperti 307 adalah pasangan ketat dari 302, ia memiliki saudara untuk perpindahan permanen: 308 Permanent Redirect.
307 Temporary Redirect: "Kirim ulang permintaan yang sama secara sementara ke URL lain ini."308 Permanent Redirect: "Kirim ulang permintaan yang sama secara permanen ke URL lain ini. Perbarui catatan Anda."
Gunakan 307 untuk pemeliharaan sementara, pengujian A/B, atau skenario failover. Gunakan 308 saat Anda secara permanen mengubah URL endpoint yang mengharapkan permintaan non-GET.
Pertimbangan Keamanan dengan 307
Dari segi keamanan, 307 seringkali lebih aman daripada 302 karena menghindari manipulasi permintaan. Namun, perlu diingat:
- Pengalihan berbahaya masih dapat mengarahkan pengguna ke situs phishing.
- Selalu gunakan HTTPS di header
Locationuntuk mencegah serangan penurunan versi.
Implementasi dan Praktik Terbaik
- Untuk Pengembang Server: Ketika Anda perlu mengalihkan sementara permintaan non-idempoten (POST, PUT, DELETE), gunakan
307. Ini adalah pilihan yang paling aman dan paling benar secara semantik. - Untuk Pengembang Klien: Pastikan pustaka klien HTTP Anda (misalnya, Axios, Requests) menangani respons
307dengan benar dengan mengirim ulang permintaan asli ke lokasi baru. Sebagian besar pustaka modern melakukan ini dengan benar. - Selalu Utamakan Presisi: Secara default gunakan
307daripada302ketika Anda yakin metode harus dipertahankan. Ini menghilangkan ambiguitas.
Alternatif untuk 307 Temporary Redirect
Tergantung pada kasus penggunaan Anda:
- Gunakan 308 Permanent Redirect jika perpindahan bersifat permanen dan Anda memerlukan pemeliharaan metode.
- Gunakan 302 Found jika metode tidak masalah dan kompatibilitas mundur lebih penting.
- Gunakan 301 Moved Permanently untuk relokasi permanen di mana SEO menjadi prioritas.
Kesimpulan: Jaminan Keamanan
Kode status HTTP 307 Temporary Redirect adalah bukti evolusi web menuju presisi dan keamanan yang lebih besar. Ini memecahkan ambiguitas kritis dalam protokol yang dapat menyebabkan kehilangan data dan kerentanan keamanan.
Kode status 307 Temporary Redirect lebih dari sekadar angka lain dalam spesifikasi HTTP. Ini memecahkan masalah dunia nyata dengan memastikan bahwa metode dan badan permintaan tetap utuh selama pengalihan.
Meskipun 302 dan 303 memiliki tempatnya, 307 memberikan jaminan krusial: bahwa permintaan akan dikirimkan persis seperti yang dimaksudkan, bahkan ketika tujuannya berubah sementara. Ini menjadikannya sangat diperlukan untuk membangun aplikasi web yang andal dan aman yang menangani operasi sensitif.
Memahami perbedaan nuansa antara kode pengalihan ini adalah ciri khas pengembang senior. Dan ketika tiba saatnya untuk menguji dan memvalidasi bahwa aplikasi Anda menangani pengalihan ini dengan benar, alat yang ampuh seperti Apidog memberikan visibilitas dan kontrol yang diperlukan untuk memastikan pengalihan Anda tidak hanya berfungsi, tetapi berfungsi dengan tepat.
