Redirect Sementara 307

Arti redirect sementara 307, jaminan pelestarian metode HTTP yang membedakannya dari 302, kemunculannya pada upgrade HSTS, serta cara Google memperlakukannya dalam SEO.

Pertama kali diterbitkan: 28 Jun 2026 · Terakhir diperbarui: 6 Agu 2026 · Advanced
Bahasa
1 sinyal bukti di halaman ini

Bagi Google, redirect sementara 307 berarti hal yang sama seperti 302: sinyal sementara yang lemah dan tidak mengalihkan peringkat URL lama ke target, sehingga tidak ada alasan SEO untuk memilih salah satunya. Perbedaan nyatanya adalah jaminan spesifikasi: 307 tidak boleh mengubah metode atau body permintaan, jadi POST tetap POST. Ini penting untuk formulir, API, dan framework modern seperti Next.js, tetapi tidak terlihat pada redirect GET halaman biasa. ‘307’ yang membingungkan sering kali bukan redirect sama sekali, melainkan artefak HSTS yang dibuat browser saat menaikkan http ke https dengan body 0 byte; redirect checker atau curl biasa menampilkan status server yang sebenarnya.

TL;DR — 307 adalah redirect sementara yang menurut RFC 9110 “MUST NOT change the request method” (terjemahan) “TIDAK BOLEH mengubah metode permintaan”—satu jaminan keras yang tidak diberikan 302. Untuk SEO, ini bukan peristiwa penting: dokumentasi Google mencantumkannya sebagai “Equivalent to 302(terjemahan) “Setara dengan 302” (sinyal sementara yang lemah), dan Mueller mengatakan pilihan 307 vs. 302 “doesn’t really matter” (terjemahan) “sebenarnya tidak penting” untuk penelusuran. Yang penting adalah apakah redirect harus bekerja untuk trafik POST/API. 307 yang benar-benar membingungkan adalah artefak HSTS: “redirect” 0 byte khusus browser yang tidak pernah dikirim server, muncul saat browser menaikkan http ke https sendiri. Ada dua kasus yang tidak berkaitan secara fungsional; tugas utamanya adalah memisahkannya.

307 memiliki dua kasus yang sepenuhnya berbeda

Inilah gagasan pengaturnya, dan berasal langsung dari panduan kode status saya, yang memuat dua entri terpisah untuk 307: “307 Temporary Redirect – Has the same functionality as a 302 redirect, except you can’t switch between POST and GET” (terjemahan) “307 Temporary Redirect—fungsinya sama dengan redirect 302, kecuali Anda tidak dapat berganti antara POST dan GET” dan “307 HSTS Policy – Forces the client to use HTTPS when making requests instead of HTTP.” (terjemahan) “307 HSTS Policy—memaksa klien memakai HTTPS saat membuat permintaan, bukan HTTP.” Keduanya berbagi nomor, tetapi hampir tidak berbagi hal lain:

  1. 307 sebagai redirect sementara nyata yang diterbitkan server—dipilih secara sengaja (atau menjadi default framework) untuk mempertahankan metode HTTP dan body pada permintaan non-GET.
  2. 307 sebagai artefak browser HSTS—bukan respons server sama sekali. Browser menaikkan http ke https secara internal lalu melabeli upgrade itu sebagai 307.

Mencampuradukkan kedua kasus ini adalah sumber kebingungan 307 yang paling umum. Saya akan membahasnya satu per satu.

Kasus 1: 307 nyata—apa yang diwajibkan spesifikasi

RFC 9110 (spesifikasi semantik HTTP saat ini) tidak ambigu di §15.4.8:

“The 307 (Temporary Redirect) status code indicates that the target resource resides temporarily under a different URI and the user agent MUST NOT change the request method if it performs an automatic redirection to that URI.” (terjemahan) “Kode status 307 (Temporary Redirect) menunjukkan bahwa sumber daya target untuk sementara berada di URI berbeda dan user agent TIDAK BOLEH mengubah metode permintaan jika melakukan pengalihan otomatis ke URI tersebut.”

Evidence for this claim RFC 9110 defines 307 Temporary Redirect as a temporary move and requires clients not to change the request method when following it automatically. Scope: HTTP semantics for real server 307 responses, not browser-internal HSTS displays. Confidence: high · Verified: IETF: RFC 9110 §15.4.8 — 307 Temporary Redirect

“MUST NOT” itu adalah kewajiban keras, bukan saran. Bandingkan dengan bagian 302 (§15.4.3), yang mendokumentasikan kekacauan historis yang hendak diperbaiki oleh 307: “For historical reasons, a user agent MAY change the request method from POST to GET for the subsequent request. If this behavior is undesired, the 307 (Temporary Redirect) status code can be used instead.” (terjemahan) “Karena alasan historis, user agent BOLEH mengubah metode permintaan dari POST menjadi GET pada permintaan berikutnya. Jika perilaku ini tidak diinginkan, kode status 307 (Temporary Redirect) dapat digunakan.” Dengan kata lain, 307 ada khusus untuk menghapus ambiguitas POST→GET yang dahulu terjadi pada klien lama dengan 302.

MDN menyatakan versi praktis dari perbedaan yang sama:

“The difference between 307 and 302 is that 307 guarantees that the client will not change the request method and body when the redirected request is made. With 302, older clients incorrectly changed the method to GET. 307 and 302 responses are identical when the request method is GET.” (terjemahan) “Perbedaan antara 307 dan 302 adalah 307 menjamin klien tidak mengubah metode dan body permintaan saat permintaan yang dialihkan dibuat. Pada 302, klien lama keliru mengubah metode menjadi GET. Respons 307 dan 302 identik ketika metode permintaan adalah GET.”

Kalimat terakhir itulah yang paling penting untuk SEO. Hampir setiap redirect yang diperhatikan SEO—halaman lama menuju halaman baru—adalah permintaan GET, dan untuk permintaan GET, 307 dan 302 benar-benar identik. Jaminan mempertahankan metode hanya berpengaruh ketika metodenya bukan GET: pengiriman ulang formulir, endpoint API, target webhook, atau pengalihan POST checkout maupun autentikasi. Yang dijamin spesifikasi adalah metode dan body; spesifikasi tidak menetapkan secara otomatis bagaimana setiap klien menangani header, kredensial, atau permintaan lintas origin saat diputar ulang. Verifikasi perilaku itu pada klien yang sebenarnya, jangan mengasumsikan byte demi byte. Jika membandingkan kedua kode untuk perpindahan halaman biasa, pembahasan mendalamnya ada pada artikel 302 vs. 307 khusus; artikel ini mengasumsikan Anda sudah memahami konsep dasar redirect sementara dari pendalaman redirect 302 dan berfokus pada hal yang unik dari 307.

302 vs. 303 vs. 307 dalam satu tabel

Ketiganya berada dalam kelompok “temporary” (terjemahan) “pengalihan bersifat sementara” RFC, tetapi perilakunya berbeda pada dua sumbu yang penting—pelestarian metode dan caching:

KodeMetode saat redirect otomatisDapat di-cache secara heuristik?
302 FoundDapat mengubah POST menjadi GET (perilaku klien historis; bukan kewajiban RFC)Tidak
303 See OtherSengaja mengambil target dengan GET atau HEADTidak
307 Temporary RedirectTIDAK BOLEH mengubah metodeTidak

Tidak satu pun dari ketiganya dapat di-cache secara heuristik secara default—307 (seperti 302 dan 303) memerlukan sinyal kesegaran eksplisit (Cache-Control, Expires, dan sebagainya) sebelum cache menyimpannya tanpa bertanya lagi.

Kasus 1, lanjutan: cara Google memperlakukan 307 nyata untuk SEO

Versi singkatnya: persis seperti 302. Dokumentasi HTTP Status Codes Google mencantumkan baris 307 sebagai “Equivalent to 302(terjemahan) “Setara dengan 302”, dan baris 302 yang diwarisinya menjelaskan artinya:

“By default, Google’s crawlers follow the redirect, and Google systems use the redirect as a weak signal that the redirect target should be processed.” (terjemahan) “Secara default, crawler Google mengikuti redirect, dan sistem Google menggunakan redirect sebagai sinyal lemah bahwa target redirect harus diproses.”

“Weak” (terjemahan) “Lemah” adalah kata kuncinya—redirect sementara tidak mengonsolidasikan kanonikalisasi ke target seperti redirect permanen. Dokumentasi Redirects and Google Search Google mengelompokkan 302, 303, dan 307 sebagai “temporary” (terjemahan) “sementara” dan menjelaskan perilakunya: “Googlebot follows the redirect, but the indexing pipeline doesn’t use the redirect as a signal that the redirect target should be canonical.” (terjemahan) “Googlebot mengikuti redirect, tetapi pipeline indexing tidak memakai redirect sebagai sinyal bahwa target redirect harus menjadi kanonik.” Halaman yang sama menyatakan: “If you just want to send users to a different page temporarily, use a temporary redirect.” (terjemahan) “Jika hanya ingin mengirim pengguna ke halaman berbeda untuk sementara, gunakan redirect sementara.”

Evidence for this claim Google's indexing pipeline does not use a temporary 302, 303, or 307 redirect as a signal that the redirect target should be canonical. Scope: redirect crawling, indexing, and canonicalization Confidence: high · Verified: Redirects and Google Search

Tepat setelah baris 307 dan 308, Google menambahkan catatan yang layak diingat:

“While Google treats these status codes the same way, keep in mind that they’re semantically different. Use the status code that’s appropriate for the redirect so other clients (for example, e-readers, other search engines) may benefit from it.” (terjemahan) “Walaupun Google memperlakukan kode status ini dengan cara yang sama, ingatlah bahwa keduanya berbeda secara semantik. Gunakan kode status yang sesuai untuk redirect agar klien lain (misalnya e-reader dan mesin pencari lain) dapat memperoleh manfaat.”

Jadi Google mengelompokkan 307 dan 302 untuk peringkat, tetapi tetap meminta Anda memilih kode yang benar secara semantik. Itulah seluruh jawaban SEO-nya. Evidence for this claim Google treats 307 as equivalent to 302 for Search while noting that the HTTP semantics differ. Scope: Google Search redirect handling; clients still need the semantically appropriate status code. Confidence: high · Verified: Google: HTTP status codes and Search John Mueller menyampaikannya lebih terus terang dalam episode 51 Search Off the Record (“Let’s talk redirects” (terjemahan) “Mari membahas redirect”), dengan menjelaskan bahwa “with 307, 308, it also forwards POST requests” (terjemahan) “dengan 307 dan 308, POST juga diteruskan”—berbeda dari 301/302, yang meneruskan GET—lalu menyimpulkan:

Mueller juga menjelaskan bahwa dari sudut pandang SEO, 307 tidak banyak berarti; pertimbangan yang lebih penting adalah apakah mekanisme itu bekerja untuk API, yang biasanya tidak perlu diindeks langsung di Search.

Tidak ada keuntungan peringkat dengan mengganti redirect sementara menjadi 307. Satu-satunya alasan yang sah adalah mempertahankan metode/body—atau preferensi future-proofing umum, yang akan saya bahas di akhir.

Kasus 1, lanjutan: default framework dan CDN

Semakin banyak pertanyaan “mengapa ini 307?” bukanlah pilihan sengaja, melainkan nilai bawaan kerangka kerja. Fungsi redirect() Next.js secara default menghasilkan 307, dan dokumentasinya menjelaskan alasannya di bawah heading “Why does redirect use 307 and 308?” (terjemahan) “Mengapa redirect memakai 307 dan 308?”: “The redirect() method uses a 307 by default, instead of a 302 temporary redirect, meaning your requests will always be preserved as POST requests.” (terjemahan) “Metode redirect() menggunakan 307 secara default, bukan redirect sementara 302, sehingga permintaan Anda selalu dipertahankan sebagai permintaan POST.” Next.js memakai 303 khusus di dalam Server Actions dan menyediakan permanentRedirect() terpisah untuk kasus 308. Jika melihat 307 yang tidak Anda tulis sendiri, periksa apakah framework atau platform edge menetapkannya sebagai default untuk redirect non-GET—biasanya itulah jawabannya, dan biasanya benar.

Kasus 2: “phantom 307” HSTS yang tidak pernah dikirim server

Inilah wilayah yang benar-benar kurang dibahas, dan alasan artikel 307 khusus berguna. Saat situs mengirim header Strict-Transport-Security (HSTS), browser diberi tahu bahwa mulai sekarang situs hanya boleh dimuat melalui https. Pada permintaan berikutnya ke versi http, browser menaikkan ke https sendiri, tanpa berbicara dengan server—lalu menampilkan upgrade internal itu sebagai “307” di alat pengembang dan crawler.

John Mueller menjelaskan mekanismenya di situs pribadinya:

“After seeing the HTTPS URL with the HSTS header (for example, with any redirect from the HTTP version), Chrome will act like it’s seeing a 307 redirect the next time you try to access the HTTP page. Your server’s not returning a 307, Chrome is just showing it to you as such to explain that it’s doing the redirect for you.” (terjemahan) “Setelah melihat URL HTTPS dengan header HSTS (misalnya melalui redirect apa pun dari versi HTTP), Chrome akan bertindak seolah-olah melihat redirect 307 saat Anda mencoba mengakses halaman HTTP berikutnya. Server Anda tidak mengembalikan 307; Chrome hanya menampilkannya demikian untuk menjelaskan bahwa Chrome melakukan redirect untuk Anda.”

Body 0 byte adalah petunjuknya. Mueller menambahkan, “the 307 isn’t actually a redirect at all, it’s just a placeholder.” (terjemahan) “307 sebenarnya bukan redirect sama sekali, melainkan hanya placeholder.” Panduan redirect saya menjelaskan konsekuensi praktis untuk audit: “When web servers require clients to only use HTTPS connections (HSTS policy), Google won’t see the 307 because it’s cached in the browser. The initial hit (without cache) will have a server response code that’s likely a 301 or a 302. But your browser will show you a 307 for subsequent requests which makes it more difficult to troubleshoot. You will need to use a fresh Incognito session to see the returned status code.” (terjemahan) “Saat server web mewajibkan klien memakai koneksi HTTPS (kebijakan HSTS), Google tidak melihat 307 karena status itu di-cache di browser. Akses awal (tanpa cache) kemungkinan menghasilkan kode respons server 301 atau 302. Namun browser akan menampilkan 307 pada permintaan berikutnya sehingga troubleshooting lebih sulit. Gunakan sesi Incognito baru untuk melihat kode status yang dikembalikan.”

Apa yang sebenarnya dilihat Googlebot untuk HSTS (dan bagaimana ceritanya berkembang)

Dua pernyataan Google yang terpisah lima tahun layak dibaca bersama. Pada Desember 2015, Zineb Ait Bahajji (saat itu di Google) mengatakan, menurut Search Engine Roundtable, bahwa dengan HSTS Googlebot melihat redirect 301, sedangkan 307 yang tampil di browser hanyalah “redirect internal”. Pada Oktober 2020, penjelasan Mueller dalam video Ask Google Webmasters (melalui Search Engine Journal) menegaskan bahwa Googlebot tidak berinteraksi dengan 307 semu karena itu bukan redirect nyata. Bagaimanapun, crawler tidak melihat “307” yang sama seperti manusia di alat pengembang. Perangkat dan infrastruktur crawl berubah (Fetch as Google sudah dihentikan untuk URL Inspection), tetapi poin dasarnya bertahan setidaknya satu dekade: tidak ada 307 nyata yang diterbitkan server dalam kasus HSTS. Perlakukan pernyataan 2020 sebagai panduan saat ini; pernyataan 2015 berguna sebagai sejarah.

Pelajaran operasionalnya: HSTS adalah kenyamanan browser, bukan mekanisme penemuan crawl. Pemilik situs tetap memerlukan redirect sisi server nyata (301 sungguhan) untuk http→https jika ingin jalur itu bekerja bagi crawler.

Cara Bing memperlakukan 307

Sejujurnya, ada celah dokumentasi. Saya tidak menemukan pernyataan publik Bing yang membahas 307 secara spesifik atau 307 yang dipicu HSTS. Panduan redirect Bing (tulisan 2011 Mengelola redirect—301, 302, dan kanonikal dan tulisan 2020 Migrasi Situs dengan Bing) hanya mencakup perbedaan permanen-sementara 301/302—tidak menyebut 307, 308, atau HSTS. Jadi, alih-alih menganggapnya sama dengan Google, sampaikan apa adanya: Bing belum menyatakan sesuatu yang khusus tentang 307 secara publik. Fenomenanya tetap nyata dan relevan bagi crawler apa pun mesinnya. SEO Spider Screaming Frog menyediakan toggle “Respect HSTS Policy” justru karena HSTS memengaruhi crawling—tetapi itu dokumentasi tooling, bukan pernyataan Bing.

Kapan sengaja memilih 307

Pilih 307 (alih-alih 302) setiap kali kehilangan metode atau body asli akan merusak sesuatu:

  • Endpoint API dan target webhook yang menerima POST/PUT/PATCH.
  • Alur pengiriman formulir (POST) yang melakukan redirect setelah pemrosesan.
  • Pengalihan POST checkout/login antarhost.
  • Apa pun yang membawa body permintaan yang tidak boleh hilang.

Untuk perpindahan halaman biasa, 302 dan 307 tidak dapat dibedakan oleh Google, jadi keduanya baik dari sisi SEO. Jika berurusan dengan versi permanen dari logika mempertahankan metode yang sama, itulah hubungan 301-vs-308—308 terhadap 301 seperti 307 terhadap 302.

Preferensi saya dari panduan redirect lebih tegas daripada “it doesn’t matter” (terjemahan) “tidak ada bedanya”: “my preferred order would be: 307 / 302 / 303 > Meta refresh 0 / HTTP refresh 0.” (terjemahan) “urutan pilihan saya adalah: 307 / 302 / 303 > Meta refresh 0 / HTTP refresh 0.” Saya menempatkan 307 pertama di antara opsi sementara—memakainya secara konsisten berarti aman dalam hal pelestarian metode, kira-kira argumen “kelengkapan” yang juga disampaikan Mueller. Apa pun pilihan Anda, pastikan 307 nyata (atau artefak HSTS) tidak menjadi satu hop dalam rantai redirect yang lebih panjang—setiap hop tambahan menambah latensi dan mengurangi efisiensi.

Try it live

This is a real endpoint on this site — not a simulation. Hit it from the button, open it in a new tab, or curl -i it from your terminal, and the server answers with the actual status code this article is about.

Open in new tab ↗

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.