307 Temporary Redirect
Penggunaan
Kode status 307 Temporary Redirect menandakan bahwa sumber daya tujuan tersedia di URL yang berbeda. Klien membuat permintaan baru ke URL yang disebutkan pada header Location dan tidak diizinkan mengubah metode permintaan. Hal ini berbeda dari kode status 302, yang mengizinkan klien beralih dari POST ke GET.
Ketika perilaku yang diinginkan justru mengubah metode permintaan, kode status 303 adalah alternatif yang disarankan. Misalnya, mengalihkan pengiriman formulir POST ke halaman konfirmasi menggunakan 303 dengan tindak lanjut berupa GET.
Klien harus mengulangi metode, header, dan body yang persis sama ke URL yang baru. Server memproses permintaan yang dialihkan tersebut secara normal. Karena 307 Temporary Redirect tidak bersifat persisten, permintaan di masa mendatang diharapkan tetap menggunakan URL asli dan memvalidasi ulang perubahan sementara itu.
Padanan permanennya adalah 308, yang mempertahankan metode permintaan secara identik tetapi menandakan bahwa perpindahan bersifat permanen sehingga klien memperbarui tautan yang disimpannya.
Respons ini secara bawaan tidak dapat di-cache. Untuk membuat pengalihan dapat di-cache, tambahkan header Cache-Control atau Expires.
Kode status 307 Temporary Redirect juga berfungsi sebagai pengalihan internal ketika kebijakan HSTS dideklarasikan melalui header Strict-Transport-Security atau daftar preload HSTS. Klien menggunakan kode status tersebut untuk pengalihan dari HTTP ke koneksi aman menggunakan HTTPS tanpa menghubungi server.
Catatan
Browser menghasilkan “307 Internal Redirect” di DevTools ketika meningkatkan HTTP menjadi HTTPS melalui HSTS. Pengalihan ini terjadi sepenuhnya di dalam browser tanpa permintaan jaringan. Header Non-Authoritative-Reason: HSTS muncul di DevTools. Loop pengalihan 307 antara HTTP dan HTTPS menandakan adanya konflik antara HSTS dan aturan pengalihan di sisi server. Pastikan server hanya melakukan pengalihan pada porta HTTP.
Catatan
303 memaksa permintaan tindak lanjut menggunakan GET terlepas dari metode aslinya, sehingga 303 menjadi standar untuk pengalihan setelah POST. 307 mempertahankan metode dan body aslinya. Klien mengirim ulang POST/PUT/PATCH yang sama ke URL yang baru.
Dampak SEO
Google memperlakukan 307 sebagai sinyal lemah bahwa target pengalihan adalah URL yang dipilih, tidak seperti 301/308 yang merupakan sinyal kuat. Google mengindeks salah satu di antara URL sumber atau URL target. 307 yang dibiarkan terpasang dalam jangka panjang pada akhirnya dapat diperlakukan sebagai pengalihan permanen, sehingga perubahan permanen lebih tepat dilayani oleh 308.
Contoh
Klien meminta sebuah sumber daya dan server merespons dengan 307 Temporary Redirect karena sumber daya tersebut tersedia di lokasi alternatif.
Permintaan
GET /news.html HTTP/1.1
Host: example.com
Respons
HTTP/1.1 307 Temporary Redirect
Location: http://example.com/breaking/news.html
Referensi kode
.NET
HttpStatusCode.TemporaryRedirect
Rust
http::StatusCode::TEMPORARY_REDIRECT
Rails
:temporary_redirect
Go
http.StatusTemporaryRedirect
Symfony
Response::HTTP_TEMPORARY_REDIRECT
Python3.5+
http.HTTPStatus.TEMPORARY_REDIRECT
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_TEMPORARY_REDIRECT
Angular
@angular/common/http/HttpStatusCode.TemporaryRedirect