- ベストアンサー
GETとPOSTの違い
<form>でCGIへのデータの転送ですが、 (1)「GET」と 「POST」がありますが、どんな違い、メリット/デメリットがあるのか教えてください (2)また、送信情報のセキュリティーと関係はありますか? (3)検索エンジンなどはGETが多いようですが、なぜですか? いろいろ質問が多くて申し訳ありません。 よろしくお願いいたします
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
CGIプログラム側から見ると、 ○「GET」の場合 環境変数「QUERY_STRING」で値が渡される データがOSで認められた以上の大きさになると、値が環境変数に収まらなくなりデータが途中で切れてしまう ○「POST」の場合 Formの値は標準入力(STDIN)に渡され、データの長さは環境変数「CONTENT_LENGTH」に入る データの長さはOSに依存しないため、大きなデータでも問題なく渡せる という違いがありますね。 一方、CGIを使うユーザー側から見ると、GET methodの場合はURLの後に「http://hogehoge/foo.cgi?input=xxx」というような形で引数を指定すると、Formからデータを入力したのと同じような効果が得られるのに対し、POST methodしか対応していないCGIでは、基本的にFormにデータを入力してやらないとプログラムが正しく動かない、という違いがあります。 そのため、検索エンジン等の場合は検索結果に対して直リンクが張りやすいGET methodを使っているところがほとんどです。 セキュリティ的にはどちらも大した違いはありませんが、Formに入力したデータがブラウザの「アドレス」欄に表示されない分だけ、ややGET methodの方が有利といえるでしょうか。
お礼
よく分かりました。ありがとうございます。 ちなみに、最後のくだりは、POSTのほうが有利の間違いではないですか? GETはアドレス欄に取得値が表示されるのですよね?