3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MethodNotAllowedHttpException(落ち着け、ルーティングが見つからないだけ)

Last updated at Posted at 2018-11-24

セッション切れ時に、POSTするアクションを叩いた時さ。。。

MethodNotAllowedHttpException
↑このエラーが起きたんだ。。。

この原因は、、、

httpリクエスト時に発生する。
ルーティングに該当するURLが存在しない。

ということなんだね。

いやいや、ルーティングファイルに定義してあるやん!!!
って思うんだけど、セッション切れ時のリクエストの流れを抑えていこう。

セッション切れしたときのざっくりの流れ

結論からいうと、リダイレクトが原因でこの現象が起きている、どういうことか?

  1. セッション切れ時に、POSTするアクションを叩く。
  2. フレームワーク側でセッション切れなので、ログイン画面へ遷移させる
  3. ログインする
  4. ログイン後処理で、セッション切れ前のリクエスト情報を拾って、そのルーティングにリダイレクトする

そう、4で死ぬのだ。

なぜ死ぬ?

それは、リダイレクトしているからだ。
そう、なにを隠そう当たり前なんだけど、リダイレクトすると、METHODが、"GET"になるんだよね。
「なんでやねん!!」
確かに、そう思うけど、
ユーザーからすれば何処にリダイレクトされたかも分からないようなリソースに、POSTデータを勝手に送るなんて、、、そっちのほうが
「なんでやねん!!」

というかんじですね。

じゃあ、どうするねん。

ケースバイケースかもですけど、
とりあえず、各プロジェクトのLoginコントローラなるものの、ログイン後処理で、
一律遷移させるページを決めて、リダイレクトさせるのがいいのかなと思います!!

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?