鉄は熱いうちに打てHTTPGetとHTTPPostの違いの詳細


今日先生の仕事部屋でプロジェクトをする時、突然1つのページが2種類の異なっている伝値のタイプを使ったことを見て、突然興味があって、本質の違いを理解したいです。以前使ったのは2種類の使い方を知っていますが、まだ雲里霧中のです。次はあの大神さんの文章です。
GETとPOSTはHTTP要求の2つの基本的な方法であり、それらの違いといえば、WEB開発に接触したことがある人はいずれも1、2を言えます。
最も直感的な違いは、GETがパラメータをURLに含め、POSTがrequest bodyを通してパラメータを伝達することです。
あなたは自分で無数のGETとPOSTの要求を書いたことがあるかもしれません。あるいはすでに多くの権威サイトがまとめた彼らの違いを見ました。いつ何を使うべきかよく分かります。
面接でこの質問をされると、あなたの心は自信と喜びに満ちています。
あなたが気楽に「標準的な答え」を与えました。
GETはブラウザの返却時に無害です。POSTは再度要求を提出します。
GETによって生成されるURLアドレスは、Bookmarkであり、POSTではない。
GET要求はブラウザからアクティブcacheされますが、POSTは手動で設定しない限り、できません。
GET要求はurl符号化のみ可能であり、POSTは複数の符号化方式をサポートする。
GET要求パラメータはブラウザ履歴に完全に保存されますが、POSTのパラメータは保存されません。
GET要求はURLで送信するパラメータには長さ制限がありますが、POSTはありません。
パラメータのデータタイプに対しては、GETはASCII文字のみを受け付けますが、POSTは制限がありません。
GETはPOSTよりも安全ではありません。パラメータが直接URLに露出しているので、敏感な情報を伝えるためには使えません。
GETパラメータはURLを通して伝達され、POSTはRequest bodyに置かれる。
(本基準の答えはw 3 schoolsから参照)
「残念ですが、これは私たちの答えではありません。」
真実を教えてください。
GETとPOSTは本質的に区別がないと教えたら、信じますか?
GETとPOSTの上着を脱いで、素直に会いましょう。
GETとPOSTは何ですか?HTTPプロトコルにおける2つの要求を送信する方法。
HTTPは何ですか?HTTPは、TCP/IPに基づくデータがマルチ次元ネットワークでどのように通信されるかに関するプロトコルである。
HTTPの下層はTCP/IPである。だからGETとPOSTの一番下はTCP/IPで、つまりGET/POSTはTCPリンクです。GETとPOSTでできることは同じです。GETにrequest bodyを加えて、POSTにurlパラメータを付けます。技術的には完全に通用します。
では、「標準的な答え」の違いは何ですか?
私の大万次元ネットワークの世界では、TCPは自動車のように、私達はTCPでデータを運送しています。それはとても信頼できます。これまでに、部品がなくなったりすることはありません。しかし、もし道を走っているのがそっくりな車だったら、この世界は混乱しているように見えます。急便を送る車は前の荷物が満載されている車に道を塞がれて、交通システムが麻痺してしまうかもしれません。このようなことを避けるために、交通ルールHTTPが誕生しました。HTTPは自動車輸送にいくつかのサービスカテゴリを設定しており、GET、POST、PUT、DELETEなどがあり、HTTPはGET要求を実行する時、自動車にGETのラベル(methodをGETとする)を貼ると規定しています。そして転送したデータを車の屋上に置くことを要求しています。POSTの要請なら、車内にPOSTのラベルを貼って荷物を車内に置いてください。もちろん、GETの時に車内にこっそり荷物を隠すこともできますが、これはとても不名誉です。POSTの時に屋根の上にデータを置くこともできます。HTTPは行動基準ですが、TCPはGETとPOSTがどうやって実現するかの基本です。
しかし、HTTPがGETとPOSTパラメータの伝送路(urlまたはrequest body)に対して要求を提出しただけを見ました。標準的な答え」の中でパラメータの大きさの制限はどこから来ましたか?
私の世界ではもう一つの重要な役割があります。運送会社です。ブラウザ(http依頼開始)とサーバー(http要求受諾)は異なる運送会社です。理論的には、天井の上に荷物を無限に積み上げることができます。しかし、運送会社は馬鹿ではないです。積込と荷下ろしもとてもコストがかかります。単独の運送量を制限してリスクをコントロールします。データ量が大きすぎると、ブラウザとサーバーにも負担がかかります。業界では成文されていない規定は、ブラウザは通常、urlの長さが2 Kバイトに制限されますが、サーバーは最大で64 Kサイズのurlを処理します。オーバーした部分は処理しません。GETサービスを利用すれば、request bodyに隠したデータがサーバによって処理方法が異なります。サーバーによっては荷を下ろしてくれたり、データを読んでくれたりします。サーバーによっては無視されているものもあります。
はい、GETとPOSTは本質的にTCPリンクです。違いはありません。しかしHTTPの規定とブラウザ/サーバーの制限のため、彼らはアプリケーションの過程でいくつかの違いを体現しています。
この文章はこのように終わったと思いますか?
私たちのボスはまだ出番を待っています。
このボスはどれぐらい神秘的ですか?ネット上で「GETとPOSTの違い」を探してみましたが、それらの検索結果からは彼に言及されていません。彼は一体何ですか?
GETとPOSTはもう一つ大きな違いがあります。簡単に言います。
GETはTCPパケットを生成する。POSTは2つのTCPパケットを生成する。
長い話:
GET方式の要求に対して、ブラウザはhttp headerとdataを一緒に送信し、サーバは200に応答します。
POSTに対しては、まずブラウザからheaderを送信し、サーバは100 contineに応答して、ブラウザからdataを送信し、サーバは200 ok(データを返す)に応答する。
つまり、GETは車で一回走って荷物を届けます。POSTは二回走ります。最初はサーバーに「ハイ、次は商品を送ってきます。ドアを開けて迎えてください。」と挨拶してから、後で荷物を送ります。
POSTは2ステップ必要ですので、時間的にはもっと多くかかります。GETはPOSTより効果的です。そこでYahooチームはGETをPOSTに置き換えてサイト性能を最適化することを推奨しています。でも、これは穴です。飛び込みは注意が必要です。なぜですか?
1.GETとPOSTは自分の意味があるので、勝手に混ぜてはいけません。
2.研究によると、ネット環境が良い場合、一回のカバンを出す時間と二回のカバンを出す時間の違いは基本的に無視できます。一方、ネットワーク環境が悪い場合、2回のパケットのTCPは、パケットの完全性を検証する上で、非常に大きな利点がある。
3.すべてのブラウザがPOSTで2回のカバンを送るわけではなく、Firefoxは1回だけ送ります。
今、面接官から「GETとPOSTの違い」を聞いた時、あなたの心はこうですか?
上の大神のイメージの概要を見て、みんなの心の中に自分の見方と理解があると信じています。まずこの大神さんは自動車のモデルイメージを通して抽象的なデータを紹介しました。GETはPOSTより露出しているように見えるかもしれません。しかし、実際には、POSTはGETよりも使いやすいというわけではなく、それぞれの長所があります。GET方法はKCFのハンブルクのように速くて美味しいです。POSTは家の中のおかずのように、手間がかかりますが、安心できます。
これは熱いうちに鉄を打つことについてです。HTTPGetとHTTPPostの違いを詳しく説明した文章はこれに紹介されました。より多くの関連HTTPGetとHTTPPostの違いがあります。私たちの以前の文章を検索したり、次の関連記事を見たりしてください。これからもよろしくお願いします。