HTTPQUERY
Bahasa Indonesia

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