• ベストアンサー
  • 困ってます

GETとPOSTの違い

  • 質問No.56289
  • 閲覧数31705
  • ありがとう数33
  • 回答数3

お礼率 40% (100/250)

<form>でCGIへのデータの転送ですが、

(1)「GET」と 「POST」がありますが、どんな違い、メリット/デメリットがあるのか教えてください

(2)また、送信情報のセキュリティーと関係はありますか?

(3)検索エンジンなどはGETが多いようですが、なぜですか?


いろいろ質問が多くて申し訳ありません。
よろしくお願いいたします

質問者が選んだベストアンサー

  • 回答No.1
  • ベストアンサー

ベストアンサー率 57% (232/402)

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の方が有利といえるでしょうか。
お礼コメント
u16

お礼率 40% (100/250)

よく分かりました。ありがとうございます。
ちなみに、最後のくだりは、POSTのほうが有利の間違いではないですか?
GETはアドレス欄に取得値が表示されるのですよね?
投稿日時:2001/03/28 09:23

その他の回答 (全2件)

  • 回答No.3

ベストアンサー率 57% (232/402)

ありゃ、確かに最終行間違えましたね。
そこは「POST methodの方が有利」の間違いです。(^^;;
  • 回答No.2

ベストアンサー率 29% (28/95)

メリット/デメリット、またはセキュリティという面でみると、ホストのアクセスログや、ブラウザのabout:cache、about:globalでURLの参照すると、GETの内容が見えてしまいます。
たとえばGETを利用してpasswordを送信した場合は、そこからpasswordがモレる可能性をはらんでいます。
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ