- ベストアンサー
GETで渡す文字列に関して
こんばんは。お世話になっております。 直接的なソースに関するものではありませんが、ある書籍で 「GETで渡す文字列は、長いと不具合が生じることがある云々」 「長くなる場合はPOSTで行いましょう云々」 などと書かれていましたが、やはり長くなる場合はPOSTで行うべきなのでしょうか? また、そのGETかPOSTかの判断基準はどのようなところなのでしょうか? ちなみに・・id=$id&no=$no と、検索する際、最大60ほどのキー?を渡したいと考えています。 何分、プログラムにおいて初心者の域から脱していない事もあり、この書籍の曖昧な表現に、POSTかGETかの基準に悩んでいるところから、皆さまのご意見を頂戴したく投函させていただきました。 お忙しい中恐縮ですが、宜しくお願い申し上げます。
- みんなの回答 (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の場合は表示されません。それが良いのか不味いのかは扱う内容次第なので、ケースバイケースです。
その他の回答 (1)
- fdsjaklfjas
- ベストアンサー率81% (96/118)
GETは2KBくらいが上限だったと思います。POSTの場合は制限はありません(PHPの場合、post_max_sizeで制限されますが)。 データ量以前の話として、GETはサーバの状態に変化を与えないもの(検索や商品情報表示などの参照系)、POSTは変化を与えるもの(会員登録・商品購入などの更新系)に使います。また、ログインなど、パスワードや個人情報などをクライアントからサーバに送るフォームでは、POSTを使います。GETの場合は、URL文字列に送ったデータが含まれるため、ブラウザの履歴やリファラーからその情報が流出する恐れがあるからです。 検索で使うのであれば、通常はGETが良いと思います。検索結果ページにリンクを張ったり、検索エンジンにヒットさせたりするのに都合が良いです。また、検索結果ページをユーザがブックマークしたり、ブラウザの「戻る」「進む」「リロード」での遷移がスムーズになります。ブラウザに、検索結果ページをキャッシュさせることもできます。 >検索する際、最大60ほどのキー?を渡したいと考えています。 そんなにキーがあるということは、一般消費者向けのシステムではないんでしょうか。あまり上記のようなことを考えなくて良い社内システムなどでは、「どちらでもよい」ということになるのかもしれません。
お礼
fdsjaklfjas様 はじめまして、こんばんは。貴重なご意見を有難う御座います。 #1様のご意見も含め、バイト数での情報を有難う御座います。 今回、検索プログラムを作成する際、気になっての質問だったので皆様のご意見を頂戴し、随分と安心できました。 ご親切なご意見をありがとう御座いました。
補足
supersonic様、fdsjaklfjas様へ 補足欄から失礼します。 お二方とも私にとって非常にありがたいご意見でしたが、残念ながらお二方に同じポイントを付ける事ができません。 心苦しいところではありますが、ご理解のほどお願い致します。 有難う御座いました。
お礼
supersonic様 はじめまして、こんばんは。ご丁寧なご説明を有難う御座います。 IEでの文字数の件、貴重な情報を有難う御座います。文字数を数えたら1100ほどでした。 supersonic様も仰るように、投函後、255バイトまで・・という記事を他でも見たので気になっていましたが、文字数#2様のご意見も含め、GETで渡すプログラムを組んでみたいと思います。 貴重なご意見ありがとう御座いました。