dポイントプレゼントキャンペーン実施中!

こんばんは。お世話になっております。
直接的なソースに関するものではありませんが、ある書籍で

「GETで渡す文字列は、長いと不具合が生じることがある云々」
「長くなる場合はPOSTで行いましょう云々」

などと書かれていましたが、やはり長くなる場合はPOSTで行うべきなのでしょうか?
また、そのGETかPOSTかの判断基準はどのようなところなのでしょうか?

ちなみに・・id=$id&no=$no と、検索する際、最大60ほどのキー?を渡したいと考えています。

何分、プログラムにおいて初心者の域から脱していない事もあり、この書籍の曖昧な表現に、POSTかGETかの基準に悩んでいるところから、皆さまのご意見を頂戴したく投函させていただきました。
お忙しい中恐縮ですが、宜しくお願い申し上げます。

A 回答 (2件)

GETで渡せる文字列の最大長はクライアントやサーバーの環境依存のようです。


たとえば、クライアント側でInternet Explorerを使う場合は、
http://support.microsoft.com/kb/208427/ja
に書かれているようにURL全体の長さが2083文字以内です。

WWWサーバーの環境にも依存するので、こちらも気にする必要があります。

また、
ftp://ftp.isi.edu/in-notes/rfc2616.txt
によると古いブラウザやサーバーでは255バイトに制限されていたので、気をつけるようにというような記述があります。現在の環境ではあまり関係ないかもしれませんが・・・

この辺りが長さの基準になるのではないでしょうか。

また、GETで渡す文字列はブラウザのURL欄に表示され、POSTの場合は表示されません。それが良いのか不味いのかは扱う内容次第なので、ケースバイケースです。

参考URL:http://support.microsoft.com/kb/208427/ja, ftp://ftp.isi.edu/in-notes/rfc2616.txt
    • good
    • 0
この回答へのお礼

supersonic様

はじめまして、こんばんは。ご丁寧なご説明を有難う御座います。
IEでの文字数の件、貴重な情報を有難う御座います。文字数を数えたら1100ほどでした。

supersonic様も仰るように、投函後、255バイトまで・・という記事を他でも見たので気になっていましたが、文字数#2様のご意見も含め、GETで渡すプログラムを組んでみたいと思います。

貴重なご意見ありがとう御座いました。

お礼日時:2006/12/04 02:13

GETは2KBくらいが上限だったと思います。

POSTの場合は制限はありません(PHPの場合、post_max_sizeで制限されますが)。

データ量以前の話として、GETはサーバの状態に変化を与えないもの(検索や商品情報表示などの参照系)、POSTは変化を与えるもの(会員登録・商品購入などの更新系)に使います。また、ログインなど、パスワードや個人情報などをクライアントからサーバに送るフォームでは、POSTを使います。GETの場合は、URL文字列に送ったデータが含まれるため、ブラウザの履歴やリファラーからその情報が流出する恐れがあるからです。

検索で使うのであれば、通常はGETが良いと思います。検索結果ページにリンクを張ったり、検索エンジンにヒットさせたりするのに都合が良いです。また、検索結果ページをユーザがブックマークしたり、ブラウザの「戻る」「進む」「リロード」での遷移がスムーズになります。ブラウザに、検索結果ページをキャッシュさせることもできます。

>検索する際、最大60ほどのキー?を渡したいと考えています。
そんなにキーがあるということは、一般消費者向けのシステムではないんでしょうか。あまり上記のようなことを考えなくて良い社内システムなどでは、「どちらでもよい」ということになるのかもしれません。

この回答への補足

supersonic様、fdsjaklfjas様へ

補足欄から失礼します。
お二方とも私にとって非常にありがたいご意見でしたが、残念ながらお二方に同じポイントを付ける事ができません。
心苦しいところではありますが、ご理解のほどお願い致します。
有難う御座いました。

補足日時:2006/12/04 02:18
    • good
    • 0
この回答へのお礼

fdsjaklfjas様

はじめまして、こんばんは。貴重なご意見を有難う御座います。
#1様のご意見も含め、バイト数での情報を有難う御座います。
今回、検索プログラムを作成する際、気になっての質問だったので皆様のご意見を頂戴し、随分と安心できました。

ご親切なご意見をありがとう御座いました。

お礼日時:2006/12/04 02:18

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