Kode Status 307 Temporary Redirect: Pengalihan Sementara yang Akurat

INEZA Felin-Michel

INEZA Felin-Michel

24 September 2025

Kode Status 307 Temporary Redirect: Pengalihan Sementara yang Akurat

Apidog untuk Perusahaan

Penerapan On-Premises

SSO & RBAC

Sesuai SOC 2

Jelajahi Apidog Enterprise

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.

button

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:

  1. Klien melakukan POST data formulir ke /submit-payment.
  2. Server merespons dengan 302 Found dan header Location: /confirm.
  3. Browser mengikuti pengalihan dengan mengirimkan permintaan GET ke /confirm.
  4. Data POST yang sensitif hilang. Endpoint /confirm, yang mengharapkan GET, 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:

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?

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?

Aturan praktis terbaik:

Manfaat Menggunakan 307 Temporary Redirect

Kekurangan dan Kesalahpahaman Umum

307 dan Pengembangan API

Dalam dunia API, 307 memainkan peran penting:

Tanpa 307, pengembang berisiko klien secara tidak sengaja memodifikasi jenis permintaan.

Menguji Pengalihan 307 dengan Apidog

Materi Promosi 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:

  1. Membuat Permintaan POST: Dengan mudah menyiapkan permintaan POST dengan badan JSON atau form-data ke endpoint Anda.
  2. Mensimulasikan Respons 307: Konfigurasikan server mock Anda di Apidog untuk mengembalikan 307 Temporary Redirect dengan header Location.
  3. 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?
  4. Membandingkan dengan 302: Jalankan pengujian yang sama tetapi minta mock Anda mengembalikan 302 sebagai gantinya. Amati bagaimana Apidog (berperilaku seperti browser standar) mengubah metode menjadi GET dan menghilangkan badan. Demonstrasi visual ini dengan sempurna menggambarkan perbedaannya.
  5. 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 307 dengan benar dengan mempertahankan metode.
button

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:

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.

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:

Implementasi dan Praktik Terbaik

Alternatif untuk 307 Temporary Redirect

Tergantung pada kasus penggunaan Anda:

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.

button

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.