
Note that status codes 307 and 308 are similar to the behaviors and purpose of status codes 302 and 301, but that 307 and 308 do not allow the HTTP method to change.
HTTP 308 Permanent Redirect means the requested resource has been permanently moved to a new URI, and the client should use that new URI for all future requests. Unlike a 301 redirect, a 308 requires the client to repeat the request using the exact same HTTP method that was used originally.
Both 308 and 301 signal that a resource has permanently moved, but they differ in how clients must handle the follow-up request. A 301 allows the client to change the HTTP method — for example, converting a POST to a GET — whereas a 308 does not allow the method to change. If the original request was a POST, the redirected request must also be a POST.
Both 307 and 308 preserve the original HTTP method on redirect, which sets them apart from 302 and 301 respectively. The key difference is permanence: a 307 Temporary Redirect indicates the move is temporary and future requests should still go to the original URI, while a 308 Permanent Redirect indicates the resource has moved for good.
A server returns 308 when a resource has been permanently relocated to a new URI and it is important that the client does not change the HTTP method when following the redirect. This is particularly relevant for API endpoints and non-GET requests such as POST or PUT, where changing the method would alter the intended behavior of the request.
The 308 status code was defined specifically to close the gap left by 301, which historically allowed browsers and clients to switch a POST request to a GET on redirect. By prohibiting method changes, 308 guarantees that data sent in the request body is not silently dropped when following a permanent redirect. This behavior is formally specified in IETF RFC 7538.
No, HTTP 308 is not an error. It belongs to the 3xx class of status codes, which covers redirects rather than client or server failures. It is an informational signal telling the client where to find the resource going forward, and well-behaved clients will follow the redirect automatically.