アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

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

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

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


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

A 回答 (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の方が有利といえるでしょうか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/03/28 09:23

ありゃ、確かに最終行間違えましたね。


そこは「POST methodの方が有利」の間違いです。(^^;;
    • good
    • 0

メリット/デメリット、またはセキュリティという面でみると、ホストのアクセスログや、ブラウザのabout:cache、about:globalでURLの参照すると、GETの内容が見えてしまいます。


たとえばGETを利用してpasswordを送信した場合は、そこからpasswordがモレる可能性をはらんでいます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!