3xx Redirects
Last updated Jul 24, 2023

307 - Temporary Redirect

Benjamin Bouchet
Get your free
API
key now
4.8 from 1,863 votes
See why the best developers build on Abstract
START FOR FREE
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
No credit card required

The HTTP Status Code 307 means that the client's request should be repeated with another URI.

What is HTTP Status Code 307?


Introducing HTTP Status Codes


In the world of the Hypertext Transfer Protocol (HTTP), the response status code is a critical component in the communication between a user's browser (the user agent) and the web server. The server uses these HTTP status codes to inform the user agent about the result of the requested operation. One such response status code is HTTP status code 307.


Understanding HTTP Status Code 307


HTTP status code 307, also known as the Temporary Redirect status code, is part of the HTTP response status codes that fall in the 3xx category of status codes. This category is generally associated with URL redirection. The 307 status code means that the requested resource has been temporarily moved to a different location, and the user agent should continue with the request to this new URL.


The Specifics of HTTP Status Code 307


The HTTP status code 307 is particularly significant for a couple of reasons. Firstly, it indicates a temporary redirect, as opposed to a permanent redirect such as HTTP status code 301. This means that future requests should still use the original effective request URI, not the new URL to which the temporary redirect points.


Secondly, HTTP status code 307 preserves the HTTP method of the original request during the redirect. If a POST request is made to a resource that has been temporarily moved, the user agent is instructed to make a POST request to the new URL, rather than switching to a GET request as some other redirect status codes would do. This behavior ensures the correct handling of the request method and the integrity of the original request.



When and How is HTTP Status Code 307 used?


Practical Usage of HTTP Status Code 307


The HTTP status code 307 is primarily used for temporary redirects. Imagine a scenario where a web server is undergoing maintenance, and the requested resource is temporarily available at a different location. In such a case, the server can return a 307 status response code, indicating to the user agent that it should request the resource from the new URL.


In the header field of the response, the server will include a "Location" field. This location field provides the URL of the new location where the requested resource can be found. It is important to note that this is a temporary situation, and user agents should continue to use the original URL for future requests once the maintenance is over.


Importance in Search Engine Optimization


Another aspect to consider is search engine optimization (SEO). Search engines like Google treat HTTP status code 307 as a temporary move and will continue to index the original URL. This is important because it prevents the dilution of search ranking signals, which can happen with permanent redirects.


Strict Transport Security and Internal Redirects


There's also a unique use case related to HTTP Strict Transport Security (HSTS). An HSTS-enabled server can use the HTTP status code 307 to perform an internal redirect when a user agent makes an insecure request. The server automatically redirects the user agent to the secure version of the resource, effectively protecting the user from potential security risks.


In conclusion, understanding HTTP status codes like the 307 Temporary Redirect is crucial for developers and SEO specialists alike. It allows us to ensure that user agents and search engines are correctly directed to resources, whether it's a short hypertext note or an entire webpage, while maintaining the integrity of the original request.



Example Usage of HTTP Status Code 307


Simple Example


Understanding HTTP status codes, such as HTTP status code 307, is crucial for successful web development. To better grasp the concept, let's start with a simple example. Suppose you're trying to access a webpage, but that specific page has been temporarily moved to a new URL. In this case, the web server may send an HTTP status code 307 to your browser, or user agent. This status response code indicates that the requested resource is temporarily available at a different location, specified in the response header's location field. Your browser will then automatically redirect to the new URL, reusing the HTTP method and body of the original request.


Technical Example


For a more technical perspective, consider the following HTTP request and response example. A client sends a GET request to retrieve a specific resource, say, `news.html` from `www.example.ai`. However, the resource has been temporarily moved to a new location, `breaking/news.html`. The server responds with an HTTP status code 307, indicating a temporary redirect, and provides the new URL in the location field of the response header. The client will then resend the request to the new location, maintaining the original request method.



Request 

    GET /news.html HTTP/1.1
    Host: www.example.ai

Response 

    HTTP/1.1 307 Temporary Redirect
    Location: http//www.example.ai/breaking/news.html



What Is the History of HTTP Status Code 307?


HTTP status code 307, often referred to as a "Temporary Redirect", was introduced in HTTP/1.1. Before this, HTTP/1.0 included the status code 302, described as "Moved Temporarily". HTTP/1.0 is intended for clients to perform a temporary redirect using the same method as the original request. However, popular browsers started implementing 302 redirects by changing the HTTP method to GET. As a result, HTTP/1.1 added status codes 303 and 307 to distinguish between the two behaviors. HTTP status code 307 guarantees that the request method won't be changed when reissuing the original request.


How Does HTTP Status Code 307 Relate to Other Status Codes?


Understanding the differences between HTTP status codes, particularly in the 3xx range, is crucial for effective request handling and automatic redirection. HTTP status code 307 was introduced because user agents, such as web browsers, started changing POST requests to GET requests when a 302 response was received. This was not the intended behavior, as only a 303 response should cause a POST request to turn into a GET request. Therefore, the 307 status code was introduced to allow servers to explicitly instruct the user agent that a method change should not occur when following the location response header.


Moreover, HTTP status code 307 differs from other status codes, like 302 and 303, mainly when redirecting POST, PUT, and DELETE requests. While 302 and 303 are often treated by user agents as a signal to perform a GET request, regardless of the original request method, a 307 response makes it unambiguously clear that the client should not change the request method on the redirected request.


Other Intriguing Aspects of HTTP Status Code 307


In this final section, we're going to explore some unique facets of the `HTTP Status Code 307` that you might find intriguing. This dive into the lesser-known sides of `307` will underscore its utility and versatility in managing web requests and responses.


A Unique Member of the 3xx Family


Let's begin by understanding where `307 Temporary Redirect` stands in the grand scheme of HTTP status codes. All HTTP response status codes within the `3xx` category are considered `redirection messages`. However, a `3xx` response code category is distinctly different from the `5xx` codes category, which are `server error` messages. Thus, while a `5xx` category code indicates a problem on a server, a `3xx` category code, such as `307 Temporary Redirect`, is rarely indicative of an actual problem. It merely reflects the server's behavior or configuration and is not indicative of an error or bug on the server.


Navigating Temporary and Permanent Redirections


Now, you might be wondering how `307 Temporary Redirect` is different from other similar `3xx` codes. It's essential to distinguish the purpose and use cases of the `307 Temporary Redirect` response code from other seemingly similar `3xx` codes, such as `301 Moved Permanently`. The `307 Temporary Redirect` informs the client that the passed `Location` `URI` is only a temporary resource, and all future requests should continue to access the originally requested `URI`. On the other hand, the `301 Moved Permanently` message indicates that the passed `Location` `URI` should be used for future (identical) requests. This distinction is crucial for servers and clients in managing resources effectively and efficiently.


Seamless Browsing Experience


Despite its technical intricacies, the appearance of a `307 Temporary Redirect` is usually not something that requires much user intervention. All modern browsers will automatically detect the `307 Temporary Redirect` response code and process the redirection action to the new `URI` automatically. This seamless process underscores how `307` helps to maintain the flow of web browsing without causing unnecessary disruptions for the user.


So there you have it! These intriguing aspects of `HTTP Status Code 307` demonstrate how this HTTP status code plays a vital role in shaping the internet's landscape. Its importance in maintaining server behavior, distinguishing between temporary and permanent redirections, and ensuring a seamless browsing experience cannot be overstated. As we continue to navigate the vast sea of HTTP status codes, `307 Temporary Redirect` indeed holds its unique position.

Get your free
API
key now
4.8 from 1,863 votes
See why the best developers build on Abstract
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
No credit card required