Pengalihan 303 (Lihat lainnya)

Apa itu pengalihan 303 Lihat lainnya, bagaimana pola Post/Redirect/Get bekerja, mengapa permintaan beralih ke GET atau HEAD (berbeda dari 307), perbedaannya dari 302, dan mengapa Google serta Bing hampir tidak menerbitkan panduan SEO khusus 303.

Pertama kali diterbitkan: 2 Jul 2026 · Terakhir diperbarui: 22 Agu 2026 · Advanced
Bahasa

303 Lihat lainnya adalah pengalihan HTTP sementara yang mengarahkan klien mengambil URL berbeda dengan permintaan GET atau HEAD, apa pun metode permintaan aslinya. Kode ini menggerakkan pola Post/Redirect/Get (PRG): formulir dikirim dengan POST, server mengembalikan 303 ke halaman hasil yang dapat diambil dengan GET, dan penyegaran tidak mengirim POST asli lagi. Berbeda dari 307 yang mempertahankan metode, 303 beralih ke GET atau HEAD; berbeda dari 302 yang penanganan metodenya secara historis ambigu. Untuk SEO, ini hampir tidak penting—303 adalah pola aplikasi web, bukan alat migrasi URL. Google hanya mendokumentasikannya dalam kelompok 3xx sementara bersama 302 dan 307, tanpa sinyal kanonis ke target; Google maupun Bing tidak menerbitkan panduan khusus 303. Anda biasanya tidak akan melihat 303 dipakai untuk pengalihan SEO, dan jika ada, perlakuannya seperti 302/307.

TL;DR — 303 (HTTP “303 See Other”) adalah pengalihan sementara yang mengarahkan klien mengambil resource lain dengan GET atau HEAD, apa pun metode permintaan aslinya. Inilah yang menggerakkan pola Post/Redirect/Get (PRG): POST303 → halaman hasil GET, sehingga penyegaran mengambil ulang halaman, bukan mengirim formulir lagi. Kode ini berbeda dari 307 (yang selalu mempertahankan metode) dan 302 (yang penanganan metodenya secara historis ambigu). 303 jarang benar-benar menjadi pengalihan SEO dari halaman ke halaman—ini mekanisme aplikasi web, bukan alat migrasi URL. Google hanya mendokumentasikan 303 sebagai anggota kelompok 3xx “temporary” (terjemahan) “sementara” bersama 302 dan 307—sinyal kanonisasi lemah—dan tidak menerbitkan panduan khusus 303; Bing juga tidak memiliki panduan yang saya temukan. Jangan mengarang otoritas yang tidak ada: katakan terus terang bahwa hanya sedikit yang bisa dikatakan.

Apa sebenarnya 303 itu

303 adalah kode status HTTP yang dikembalikan di header respons, sebelum body apa pun, dengan header Location yang menunjuk ke URL yang harus diambil klien berikutnya. Semantiknya sempit dan spesifik: respons atas permintaan Anda ada di tempat lain, dan Anda harus mengambilnya dengan GET atau HEAD. Evidence for this claim RFC 9110 defines 303 See Other as directing the client to retrieve another resource identified by Location using GET or HEAD. Scope: HTTP semantics for 303 responses. Confidence: high · Verified: IETF: RFC 9110 §15.4.4 — 303 See Other

Perilaku pengambilan GET atau HEAD itulah alasan 303 ada sebagai kode tersendiri, sekaligus sumbu yang membedakan tiga pengalihan yang bersifat sementara.

303 vs. 302 vs. 307: pertanyaan tentang metode

Dari sudut pandang SEO, ketiganya adalah pengalihan “temporary” (terjemahan) “sementara”—Google mengelompokkannya sebagai sinyal lemah. Namun secara teknis, ketiganya menjawab satu pertanyaan secara berbeda: saat klien mengikuti pengalihan, metode HTTP apa yang digunakannya?

KodeArtiMetode pada permintaan hasil pengalihan
302 FoundSementaraSecara historis ambigu—banyak klien mengubah POST menjadi GET, tetapi spesifikasi tidak menjaminnya sehingga perilaku berbeda
303 See OtherLihat lainnya (sementara)GET atau HEAD—metode asli sengaja diubah
307 Temporary RedirectSementaraSelalu dipertahankan—POST tetap POST dan PUT tetap PUT

303 dan 307 diperkenalkan, salah satunya, untuk menghilangkan ambiguitas di sekitar 302. Jika Anda ingin metode dipaksa menjadi GET setelah pengiriman formulir, gunakan 303. Jika metode asli harus dibawa terus (misalnya menerbitkan ulang POST ke endpoint baru), gunakan 307. 302 adalah jalan tengah historis yang longgar dan tidak menetapkan keduanya.

Perbedaan praktis lain: respons 303 tidak dapat di-cache secara default, sedangkan 301 dapat. Ini penting jika Anda khawatir browser atau CDN menyimpan target pengalihan secara tidak tepat—dengan 303, kekhawatiran itu tidak berlaku.

Pola Post/Redirect/Get, secara tepat

PRG adalah penggunaan kanonis 303 dan merupakan pola desain yang disengaja dan benar, bukan keadaan error:

  1. Klien mengirim formulir sebagai POST (membuat pesanan, memposting komentar, atau menjalankan pembayaran).
  2. Server memproses efek samping, lalu mengembalikan 303 See Other dengan header Location yang menunjuk ke URL hasil yang dapat diambil dengan GET (tanda terima, konfirmasi, atau tampilan resource yang diperbarui).
  3. Klien mengikuti dengan GET (atau HEAD) ke URL itu. Riwayat dan tombol refresh browser kini menunjuk ke pengambilan yang aman dan idempoten—memuat ulang atau menekan kembali mengambil halaman hasil, bukan memutar ulang POST.

Manfaatnya: penyegaran browser biasa berhenti mengirim formulir lagi—tidak ada lagi dialog “confirm form resubmission” (terjemahan) “konfirmasi pengiriman ulang formulir”. Tetap tepat tentang batasnya: PRG mencegah jalur pemutaran ulang itu, bukan setiap penulisan duplikat. PRG tidak menjamin pemrosesan tepat satu kali. Percobaan ulang, timeout, klik ganda, dan permintaan bersamaan masih dapat menyalakan POST asli dua kali, jadi operasi yang mengubah keadaan—pesanan, pembayaran, komentar—tetap memerlukan kontrol tingkat aplikasi (kunci idempotensi, batas transaksi, dan deteksi permintaan duplikat) jika duplikasi merupakan risiko. Dalam API RESTful, Anda juga akan melihat 303 setelah PUT atau DELETE untuk mengirim klien ke representasi resource yang terpengaruh.

Bagaimana Google memperlakukan 303 (dan mengapa hampir tidak ada yang perlu diperlakukan)

Inilah temuan utama yang jujur untuk topik ini: Google tidak memiliki panduan SEO khusus 303. 303 hanya muncul dalam dokumentasi pengalihan Google sebagai satu baris di tabel pengalihan “temporary” (terjemahan) “sementara”, di samping 302 dan 307. Kerangka Google untuk seluruh kelompok itu jelas: crawler mengikuti pengalihan, tetapi alur pengindeksan tidak menggunakan pengalihan itu sendiri sebagai sinyal bahwa target harus menjadi kanonis—walaupun sinyal lain masih dapat membuat Google mengindeks target. Ini berbeda dari, dan lebih sempit daripada, kanonisasi kuat yang diberikan 301 permanen.

Evidence for this claim Google groups HTTP 303 with temporary redirects, follows it, and does not use it as a signal that the destination should become canonical. Scope: Google Search canonicalization behavior for server-side temporary redirects. Confidence: high · Verified: Google: Redirects and Google Search

Tulisan informal John Mueller tentang jenis pengalihan bahkan lebih jelas. Setelah membahas 301, 302, dan 307 secara rinci, ia menyingkirkan 303 dalam satu catatan: “What about 303? 304.5? If you have strong feelings about one of the other kinds of redirects, feel free to use them.” (terjemahan) “Bagaimana dengan 303? 304,5? Jika Anda punya preferensi kuat terhadap jenis pengalihan lain, silakan gunakan.” Pelajaran praktis yang ia tambahkan adalah bagian berguna: “We’ll have to figure out which URL to index the content under, so if you have strong feelings about that too, make sure to follow up with other canonicalization signals.” (terjemahan) “Kami harus menentukan URL mana yang akan menjadi tempat mengindeks konten, jadi jika Anda juga punya preferensi kuat tentang itu, tindak lanjuti dengan sinyal kanonisasi lain.” Dengan kata lain, jika Anda memakai 303 dan peduli URL mana yang diindeks, jangan mengandalkan jenis pengalihan; dukung dengan rel="canonical", tautan internal, dan sitemap.

Dokumentasi Google juga menambahkan catatan yang perlu diingat untuk semua kode ini: meskipun Google memperlakukan keduanya sama, Google meminta Anda “keep in mind that they’re semantically different. Use the status code that’s appropriate for the redirect.” (terjemahan) “ingat bahwa keduanya berbeda secara semantik. Gunakan kode status yang sesuai untuk pengalihan.” Jadi kenyataan bahwa “SEO tidak peduli” bukan izin untuk menempelkan 303 pada perpindahan permanen—gunakan kode yang benar-benar sesuai dengan maksud Anda agar klien lain berperilaku tepat.

Bagaimana Bing memperlakukan 303

Terus terang: saya tidak menemukan panduan publik khusus Bing tentang penanganan 303 selain referensi kode status HTTP umum di bantuan Bing Webmaster Tools. Tidak ada pernyataan terverifikasi dari Fabrice Canel atau pihak Microsoft lain yang menyoroti 303. Ini adalah data “kami tidak memiliki dokumentasi tentang hal ini” yang sah, bukan celah untuk ditutup—saya tidak akan mengisinya dengan asumsi bahwa Bing sekadar meniru perilaku yang dinyatakan Google. Ketiadaan dokumentasi bukan bukti bahwa penanganannya identik; jika Anda membutuhkan jawaban pasti untuk Bing, ini tetap pertanyaan terbuka.

Apakah 303 penting untuk SEO? Jarang.

Kesimpulan jujur saya, yang sejalan dengan tulisan publik saya: 303 bukan alat migrasi halaman. Dalam “11 Types Of Redirects & Their SEO Impact” (terjemahan) “11 Jenis Pengalihan dan Dampaknya pada SEO”, saya merangkum bahwa 303 mengarahkan pengguna ke resource yang mirip dan bersifat sementara; pola ini lazim mencegah pengiriman formulir ulang setelah tombol kembali. 303 biasanya bukan alat SEO, dan jika dipakai dalam konteks itu, perlakuannya seperti 302/307.

Saya akan menandai satu ketegangan jujur dalam arsip tulisan saya sendiri. Dalam “HTTP Status Codes & Their SEO Impact” (terjemahan) “Kode Status HTTP dan Dampaknya pada SEO”, saya menjelaskan perlakuan 303 sebagai “undefined… They may be treated as 301 or 302, depending on how they function.” (terjemahan) “tidak terdefinisi… Kode ini dapat diperlakukan sebagai 301 atau 302, bergantung pada cara kerjanya.” Kini saya akan membingkainya lebih tepat: dokumentasi Google yakin bahwa 303 berada dalam kelompok sementara/lemah bersama 302 dan 307. Alasan “tidak terdefinisi” terasa benar dalam praktik adalah karena 303 sangat jarang di dunia nyata sehingga Google tidak pernah perlu menjelaskan kasus tepinya secara publik—bukan karena ada perilaku tersembunyi yang lebih kuat. Mulailah dari default terdokumentasi (lemah/sementara, dikelompokkan dengan 302/307); perlakukan kejutan sebagai akibat kelangkaan, bukan aturan rahasia.

Kapan 303 bisa penting? Hampir hanya pada situs dengan alur formulir/checkout berat atau aplikasi berbasis API yang menampilkan 303 dalam perayapan kode status. Bahkan saat itu, jawabannya biasanya “ini bekerja sesuai tujuan, biarkan”. Jika Anda sengaja memindahkan URL, jangan gunakan 303—gunakan 301 (permanen) atau 302 (sementara), dan gunakan 308/307 bila secara khusus memerlukan pelestarian metode.

303 vs. 201, 202, dan 204: memilih status yang tepat untuk penulisan

303 bukan satu-satunya pilihan setelah permintaan yang mengubah keadaan, dan mudah memilihnya karena kebiasaan. Dalam API (berbeda dari alur formulir browser), tiga kode 2xx sering lebih sesuai:

  • 201 Created—permintaan membuat satu atau beberapa resource secara sinkron, dan respons harus mengidentifikasi resource utama, di header Location jika ada, atau URI target itu sendiri. Gunakan ini saat pembuatan selesai dan Anda ingin klien langsung memiliki resource baru, tanpa putaran GET terpisah.
  • 202 Accepted—permintaan diterima tetapi pemrosesan belum selesai (pekerjaan antrean atau tugas asinkron). Responsnya sengaja belum menentukan hasil: jelaskan status saat ini dan, idealnya, tunjukkan monitor status yang dapat di-poll klien.
  • 204 No Content—tindakan berhasil dan tidak ada lagi yang perlu dikirim: tanpa body dan tanpa pengalihan. Respons berakhir pada bagian header.

303 memiliki bentuk yang berbeda dari ketiganya: kode ini dipakai ketika klien harus mengambil resource hasil yang diidentifikasi terpisah setelah operasi tulis—paling sering pola PRG di browser. 303 bukan pengganti langsung pembuatan sinkron (201), penerimaan asinkron (202), atau keberhasilan tanpa isi (204); masing-masing menyampaikan hasil yang berbeda, sedangkan pengalihan tidak.

Mitos umum

  • “A 303 means the page moved or is broken.” (terjemahan) “303 berarti halaman pindah atau rusak.” Tidak. Ini respons disengaja yang mengubah metode—biasanya setelah POST/PUT/DELETE—bukan sinyal “konten dipindahkan” atau error. Situs yang menyebutnya “the browser can’t find the URL because the page moved” (terjemahan) “browser tidak dapat menemukan URL karena halaman pindah” sedang mencampurkannya dengan 301/302 atau 404.
  • “A 303 passes SEO value like a 301.” (terjemahan) “303 meneruskan nilai SEO seperti 301.” Tidak. 303 bersifat sementara/lemah, dalam kelompok yang sama dengan 302 dan 307 menurut dokumentasi Google.
  • “SEOs should reach for 303 as a general redirect.” (terjemahan) “Praktisi SEO sebaiknya memakai 303 sebagai pengalihan umum.” Kode ini tidak dirancang untuk itu. Ini pola sempit formulir/API; memakainya untuk migrasi URL biasa tidak lazim.
  • “Google has detailed 303-specific rules.” (terjemahan) “Google memiliki aturan khusus 303 yang terperinci.” Tidak. Hanya satu penyebutan dalam kelompok dan sikap Mueller “feel free to use them” (terjemahan) “silakan gunakan”; itulah seluruh catatannya.
  • “303 and 302 are technically identical.” (terjemahan) “303 dan 302 identik secara teknis.” Keduanya setara untuk SEO, tetapi tidak sama secara teknis: 303 mengubah permintaan lanjutan menjadi GET atau HEAD, sedangkan penanganan metode 302 secara historis tidak konsisten—itulah alasan 303 dan 307 diperkenalkan untuk menghilangkan ambiguitas.

Letak pembahasan ini

303 adalah satu kode dalam kelompok pengalihan sementara. Kerabat terdekatnya adalah 302 (pengalihan sementara longgar yang sering dikelompokkan bersamanya) dan 307 (kebalikannya yang mempertahankan metode—307 mempertahankan metode, 303 beralih ke GET atau HEAD). Kode ini berbeda dari 301, pengalihan permanen yang benar-benar mengonsolidasikan sinyal peringkat dan menjalankan migrasi URL yang tidak pernah dirancang untuk dilakukan 303. Untuk keluarga lengkap—301/308 permanen, 302/303/307 sementara, 404/410 hilang, dan error 5xx—lihat cluster kode status HTTP tempat halaman ini berada.

Memvalidasi alur 303 dengan aman

Sebelum mempercayai 303 di dunia nyata, periksa tanpa mengikuti otomatis secara membabi buta: inspeksi nilai Location itu sendiri (apakah absolut, relatif, dan dapat di-resolve), perhatikan loop atau rantai pengalihan yang tidak perlu, pastikan permintaan lanjutan benar-benar memakai GET atau HEAD, lalu periksa status dan isi respons akhir. Untuk alur formulir atau API, periksa juga log aplikasi untuk memastikan operasi tulis asli tidak diputar ulang.

Satu peringatan: jangan menggeneralisasi perilaku satu klien menjadi aturan universal. Perilaku pengikutan otomatis browser, klien HTTP, dan framework berbeda menurut produk, versi, dan konfigurasi—laporan tentang satu klien/versi bernama bukan bukti untuk semuanya. Pemeriksa tingkat URL dapat mengonfirmasi bentuk pengalihan dan tujuan, tetapi tidak dapat memvalidasi idempotensi, penanganan kredensial, atau keamanan lintas asal; itu tetap memerlukan pengujian alur pengiriman yang sebenarnya.

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.