GETとPOSTの違いは?ほとんどのオンライン答えは間違っています!

最近読ん「HTTP Definitive Guideの」この本は、HTTPプロトコルは理解のより深いレベルを持っています。

HTTPプロトコルについてのインタビューの過程では2つの古典的な顔の質問があります。

HTTP GETとPOSTの違いについて1.話。

このプロセスを何が起こったのか、最後にユーザーの目の前にページ全体を表示するには、ブラウザにURLを入力します。

今日、私は最初の質問について話します。

まず、最も一般的な答え

我々は問題を検索すると、GoogleやBaiduのに乗る「標準解答」になっていると思われる、次の3点のほとんどに答えは、実際には、答えは質問に開いています。

クッキーやパラメータの受け渡し、およびBODY POSTでデータを使用して1. GETのURL。

データの2 GET提出の長さの制限があり、POSTデータが非常に大きくなることができます。

データがアドレスバーに表示されていないため、セキュリティをGETより3. POST。

第二に、「標準答えは」それは間違っています

1.クッキーを使用してGETのURLやパラメータの受け渡し、およびBODYのPOSTでデータ

GETとPOSTは、HTTPプロトコルで定義されています。HTTPプロトコル、方法及びデータ(URL、ボディ、ヘッダ)直交二つの概念、データ伝送が全く関係ないことである、どのようにアプリケーション層と方法です。

BODYに必要なメソッドと、どんなHTTPリクエストは、POSTデータではありません。要件はメソッドがGETの場合、それはURLに置かなければならないデータ(パラメータ)BODYに配置することはできません、ありません。

さて、この文広範なインターネットはそれから来るの?私たちは似た記述を見つけ、HTMLの標準にいますよ。これは一貫して、インターネットの格言に循環させます。しかし、これはHTTPプロトコルのみを使用するためのHTML標準的な慣習です。どのようにGETとPOSTの違いはそれとしてできますか?

また、最新のWebサーバーは、リクエストボディが含まGETサポートされています。この要求は、ブラウザが、現在はWebサーバから送信することはできませんが、それは完全にHTMLサーバーの範囲を超えてきたとブラウザにだけではありません。

データの2 GET提出の長さの制限があり、POSTデータが非常に大きくなる可能性が

私は結論をお話しましょう:HTTPプロトコルのGETとPOSTは、長さに制限はありません。HTTPプロトコルでは明らかにHTTPヘッダとボディは長さを必要とされていない、と指摘しました。

最初は、私たちがURLを介してデータを送信するためにGETを使用する場合、「データ提出は長さGET」、そしてちょうどURLの長さを取得することにより提出することができるデータの量との間には直接的な関係があります。実際には、URLパラメータは、HTTPプロトコル仕様では、URLの長さを限定するものではなく、問題は存在しない制限します。この制限は、そのブラウザとサーバを制限する固有のものです。IE URLの長さの制限は、2083バイト(+ 35 2K)です。などのNetscape、FireFoxの、などの他のブラウザについては、理論的には、何の長さの制限はありません、その制限は、オペレーティングシステムのサポートに依存します。

この制限は、URLの全体の長さだけでなく、あなたのパラメータ値のデータ長であることに注意してください。

POSTにはサイズ制限POST、HTTPプロトコル仕様では、サーバ処理プログラムの処理能力を制限すること、POSTデータのサイズに制限がない、同じです。

もちろん、私たちは多くの場合、この引数のURLのGETの長さに制限があることを言うことが起こったのかということでしょうか?これは、GETとPOSTの間に本質的な違いはありませんが、我々はまた、URLの長さ制限の2の原因について話すことができますが。

1.ブラウザ。初期のブラウザでは、URLの長さの制限を行います。そして今の限界は、私はそれがオンラインに複製されないだろうと言って、プロのテストされていないのか、特定の一種です。

2.サーバー。長いURLは、サーバ・プロセスが負担です。もともとセッションは、多くのデータは、誰かが悪意を持って、いくつかのMサイズのURLを構築し、サーバーへのアクセスを維持し、今ならば、そこではありません。同時サーバーの最大数は明らかに低下します。別の攻撃は大きな数であるし、サーバーに送信された少しだけのデータは、あなただけに行く待つサーバーのContent-Lengthを伝えることです。あなたはタイムアウト設定を持っている場合でも、この意図的なアクセスのタイムアウト時間と、サーバが羊を盗むことができます。そこで、セキュリティと安定性の考慮の友人のために友人サーバのほとんどは、URLの長さの制限を与えます。しかし、この制限は、すべてのHTTP、GET要求は、POSTが問題ではないです。

データがアドレスバーに表示されていないため、セキュリティをGETより3. POST

実際には、この引数はまた、1及び2に上記2点に基づいている基づいており、私は何の問題だと思いませんが、アドレスバー上のGETを使用することは安全ではありません、とGET、セキュリティ以外の理由「POSTの他の説明がない理由を理解する必要があります。 "

URLに表示されるクリアテキストでデータ、ユーザー名とパスワードを提出することをGETすることで他の人から離れて、自分の口座番号とパスワードを取得しことができるように、ログインページには、ブラウザのキャッシュ、他の人がブラウザの履歴を見るためである可能性が高いです加えて、データを送信するGETを使用すると、クロスサイトリクエストフォージェリ攻撃を引き起こす可能性があります。

第三に、私は理解して

「URLまたはクッキーの質量の参加、およびBODY POSTでデータを使用して1. GET」は、これは、HTTPプロトコルの使用規則です。ではない、自分の違い。

彼らは原因の異なるオペレーティングシステムとブラウザの設定を使用しているため、「データの2 GET提出は長さの制限があり、POSTデータは非常に大きくなることが、」これが違いです。NOR GETとPOST自体との差です。

「データがアドレスバーに表示されていないので3. POST、セキュリティをGETよりも、」この引数が間違っていないですが、違いは、まだ自分自身とPOSTではなくGETです。

これは、独自の三点差ではなく、使用中に少なくともそれらの差が、私はこの質問をインタビューするときインタビュアーは上記の3つの点に答えることができれば、そう、私は基本的に合格点を与えます。だから、より高いスコアをしたくないしたいですか?

第四に、究極の違い

GETとPOST GETリクエストの最大の違いは、主に冪等で、POSTリクエストではありません。これは、彼らの本質的な違いであるが、使用の違い以上。

冪等とは何ですか?これは、1つの冪等が特定のリソースを何度も要求し、同じ副作用を持つことを意味します。これは単に同じURLリクエストのより多くが、同じ結果を返す必要があることを意味します。

冪等について、物品の勧告に私のコメントを参照してください。

彼らはそのような区別を持っているので、あなたが何を聞かべきではないし、これらの操作にデータの追加および削除を使用することはできませんので、副作用を持っています。GETリクエストは冪等なので、トンネルのネットワークで試してみて、もう一度試してません。要求されたデータは、によって取得した場合、リスクが操作を繰り返すことになるが、この操作は、(あなたが操作で行うことを要求してもらうということを知っていないブラウザやオペレーティングシステム)の副作用につながる可能性が繰り返されます。

あなたがのためにある、あなたは空気銃(致死)で撮影するときに我々はすべて、ラリーで(非致死)フェイクで大会をつかむ映画の中で教師の小道具、俳優ですが、あなたは、異種小道具部門です俳優は空気銃に置き換え偽のグラブを再生するとき...

第五に、私の提案

インタビュアーはあなたにこの質問をする場合、私はあなたが三点は、彼らは、もちろん、使用が異なる究極と言って、その違いを取らなければならないことを示すために同時にある、上記の3つのポイントを教えて示唆しています。

PS:HTTPプロトコルの研究がありました、会社の面接に行ってきましたインタビュアーは彼に質問をし、彼はGET」と回答データを取得するために使用され、通常、サーバGET、他のPOST何にもデータをPOSTするために使用。違いは」、それはその後のブラシです。

いくつかの面接だけという気ので、「標準の答え。」

 

おすすめ

転載: www.cnblogs.com/itgezhu/p/10726989.html