はじめに
「リダイレクトするとGETリクエストになる」と無邪気に思っていたが、改めて聞かれると自身がなかったのでちゃんと調べてみた。
やってみよう
簡単なスクリプトを作って実際にやってみた。
結果
GET、POSTでそれぞれリクエストした後にリダイレクトするとHTTPメソッドはどのようになるか?
※ 特殊リダイレクト2つは除く(300 Multiple Choice、304 Not Modified)
種類 | ステータスコード | GET | POST |
---|---|---|---|
恒久的 | 301 Moved Permanently | GETのまま | GETになる |
恒久的 | 308 Permanent Redirect | GETのまま | POSTのまま |
一時的 | 302 Found | GETのまま | GETになる |
一時的 | 303 See Other | GETのまま | GETになる |
一時的 | 307 Temporary Redirect | GETのまま | POSTのまま |
まとめ
思い込みに反して元のHTTPメソッドを変更しないパターンがあった。
リダイレクトのステータスコードまで意識されているケースはほとんど見たことがなく、大抵はデフォルト(302)だったりするので「リダイレクトするとGETリクエストになる」と思っていた。
知識の裏をとっておくのは大事。
参考