303 See Other
用法
303 See Other 状态码通常在 POST、PUT 或 DELETE 请求之后返回。操作的结果可在另一个 URL 查看,客户端通过向指定的 Location 发起 GET 请求来获取新资源。
注意
历史上许多服务器在本意为 303 时却发送 302,而许多客户端也会通过将请求方法改为 GET 来将 302 当作 303 处理。
SEO 影响
Google 将 303 与 302、307 一同归类为临时重定向。Googlebot 会跟随该重定向,但将 303 视为目标即为首选 URL 的弱信号。
示例
客户端请求删除某个特定资源。由于原位置已不再持有可查看的资源,服务器发送 303 See Other,并指向新 Location 处的一个确认页面。
请求
DELETE /tasks/314 HTTP/1.1
Host: example.com
响应
HTTP/1.1 303 See Other
Location: http://example.com/confirmation/delete.html
303 与 307 对比
303 和 307 都是临时重定向,但方法处理方式不同。303 响应会将请求方法改为 GET(或 HEAD),而不论原始方法为何。307 响应则保留原始方法和消息体。当客户端需要获取结果页面时,在 POST 之后使用 303。当必须在新位置重复完全相同的请求时,使用 307。
代码参考
.NET
HttpStatusCode.SeeOther
Rust
http::StatusCode::SEE_OTHER
Rails
:see_other
Go
http.StatusSeeOther
Symfony
Response::HTTP_SEE_OTHER
Python3.5+
http.HTTPStatus.SEE_OTHER
Java
java.net.HttpURLConnection.HTTP_SEE_OTHER
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_SEE_OTHER
Angular
@angular/common/http/HttpStatusCode.SeeOther