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