POSTをリダイレクトしたらGETに変えられた

Author:
duo-de-fleches-stylisees-1

httpリクエストにはメソッドというものがあり、通常はGETと呼ばれる方式でアクセスします。
が、フォーム送信時などは基本的にPOSTと呼ばれる形でアクセスされるのが普通です。
他にもPUTとかDELETEとかあるけどそれは置いといて。
これ、フレームワークやプロトコルの都合でリダイレクトするとPOSTがGETになっちゃうんですねえ。

ちょっといくつかのサイトを見た感じ、301の場合本来はユーザー確認の後にそのままリダイレクトさせるのが正解なのだけれど実際のところどのブラウザもGETになってしまうらしい。
困った仕様だけれど、どのブラウザもそういう挙動ならもはやそっちが正しい仕様だ。

今回はリダイレクト先にPOSTさせることで解決はできたけど、これWeb開発者は覚えておいたほうがよい仕様ですね。
URL変わった場合など、ただリダイレクトすればいいってもんじゃないので要注意です。
.htaccessとかで知らないうちにリダイレクトされることもあるし。

そしてエンジニアならこれだけで十分伝わるでしょうけど、一般人でCMSを使う人はさらに要注意。
なぜかPOSTで送ったのにhttpdログがGETになってる、なんてまず気づけないですからねえ。

個人でもWebサービス開設するのは簡単になってきているものの、個人でトラブル解析はまだまだハードル高いですし。
独自ドメインでレンタルサーバー借りてwordpress、なんてメジャーになっているものの、やっぱりトラブルが起きてもどうにかする覚悟がない限り一般人には勧めたくないですなあ。

Share on Facebook
Pocket