HTML HTTPでのGETとPOSTの違い

99%の人がHTTPでのGETとPOSTの違いを理解しています(転送)



転送元:WebTechGarden WeChatパブリックアカウントの

GETとPOSTは、HTTPリクエストの2つの基本的な方法です。両者の違いを言えば、WEB開発に連絡したことのある人なら誰でも1つか2つを知ることができます。

最も直感的な違いは、GETがURLにパラメーターを含め、POSTがパラメーターを要求本文を通じて渡すことです。

自分で無数のGETおよびPOSTリクエストを作成したか、多くの信頼できるWebサイトで要約された違いを見たことがあるかもしれません。

面接でこの質問をされると、あなたの心は自信と喜びに満ちています。
 

072536_U5BK_2896879.png
 

あなたは簡単に「標準的な答え」を出しました:
  • ブラウザがロールバックしてもGETは無害であり、POSTはリクエストを再度送信します。
  • GETによって生成されたURLアドレスはブックマークにできますが、POSTはできません。
  • GETリクエストはブラウザによってアクティブにキャッシュされますが、POSTは手動で設定しない限りキャッシュされません。
  • GETリクエストはURLエンコードのみ可能ですが、POSTは複数のエンコード方法をサポートしています。
  • GETリクエストパラメータはブラウザの履歴に完全に保持されますが、POSTのパラメータは保持されません。
  • URL内のGETリクエストによって送信されるパラメーターの長さは制限されていますが、POST内では制限されていません。
  • パラメータのデータ型の場合、GETはASCII文字のみを受け入れ、POSTには制限がありません。
  • パラメータはURLに直接公開されるため、GETはPOSTよりも安全性が低く、機密情報を渡すために使用することはできません。
  • GETパラメータはURLを介して渡され、POSTはリクエストの本文に配置されます。



(この標準への答えはw3schoolsからです)

「残念ながら、これは私たちが望む答えではありません!」
 

072621_vmDd_2896879.png



真実を教えてください。

GETとPOSTは基本的に同じだと言ったら、それを信じますか?

GETとPOSTのコートを脱いで率直に会いましょう!

GETおよびPOSTとは何ですか?HTTPプロトコルで要求を送信する2つの方法。

HTTPとは何ですか?

HTTPは、World Wide Webでのデータの通信方法に関するTCP / IPに基づくプロトコルです。

HTTPの最下層はTCP / IPであるため、GETとPOSTの最下層もTCP / IPです。つまり、GET / POSTは両方ともTCPリンクです。

GETとPOSTでできることは同じです。リクエスト本文をGETに追加し、urlパラメータをPOSTにする必要があります。これは完全に技術的に実現可能です。

では、「標準的な答え」の違いは何ですか?
 



私のワールドワイドウェブの大きな世界では、TCPは自動車のようなものであり、TCPを使用してデータを転送します。信頼性が高く、欠落や欠落の現象が発生することはありません。

しかし、道路を走っているすべての車がまったく同じように見えると、世界は混乱のように見えます。緊急のアイテムを送る車は、前方の商品でいっぱいの車によって道路上でブロックされ、輸送システム全体が麻痺します。

これを回避するために、トラフィックルールHTTPが誕生しました。

HTTPは、GET、POST、PUT、DELETEなど、自動車輸送用のいくつかのサービスカテゴリを設定します。

HTTPは、GETリクエストを実行する場合、車にGET(setメソッドをGETに設定)のラベルを付ける必要があることを規定しており、簡単に記録できるように送信データを車の屋根(URL)に配置する必要があります。

POSTリクエストの場合は、POSTラベルを車に貼り、商品を車に入れる必要があります。

もちろん、GET中に車内の一部の商品をこっそり隠すこともできますが、これは非常に不名誉です。POST中に車のルーフにデータを置くこともできます。

HTTPは単なる行動規範であり、TCPはGETおよびPOSTの実装方法の基礎です。

ただし、GETおよびPOSTパラメーター(urlまたはrequrest本文)の伝送チャネルのHTTPリクエストのみが表示されます。

「標準的な回答」のパラメーターサイズの制限はどこから来るのですか?
 



私のワールドワイドウェブの世界では、もう1つの重要な役割があります。それは、運送会社です。

異なるブラウザー(http要求を開始する)とサーバー(http要求を受け入れる)は、異なるトランスポート会社です。

理論的には、屋根に無制限の貨物を積み重ねることができます(URLにパラメーターを無限に追加します)。

ただし、運送会社は愚かではありません。積み込みと積み降ろしも非常にコストがかかります。1つの運送量を制限してリスクを制御します。大量のデータは、ブラウザーとサーバーに大きな負担をかけます。業界での未記述のルールは、(ほとんどの)ブラウザは通常2KバイトにURLの長さを制限するのに対し、(ほとんどの)サーバーは64KまでのサイズのURLを処理するというものです。超過分は処理されません。

GETサービスを使用し、リクエストの本文でデータを密かに非表示にすると、サーバーによってデータの処理が異なります。一部のサーバーはデータのアンロードと読み取りを支援し、一部のサーバーはデータを直接無視するため、GETはリクエストの本文を取得できますが、実行できません受け取られることが保証されています。

これで、GETとPOSTは本質的にTCP接続であり、違いはありません。

ただし、HTTPの規制とブラウザ/サーバーの制限により、アプリケーションプロセスにいくつかの違いが見られます。

この記事は終わったと思いますか?


私たちの大きなボスはまだプレイするのを待っています。

この上司はどれほど不思議ですか?

インターネットで「GETとPOSTの違い」を見つけようとすると、その検索結果で彼について言及することはありません。

彼は何ですか?

GETとPOSTにはもう1つの大きな違いがあります。簡単に言うと、GETは1つのTCPパケットを生成し、POSTは2つのTCPパケットを生成します。

長い言い方:GETリクエストの場合、ブラウザーはhttpヘッダーとデータを一緒に送信し、サーバーは200(データを返す)で応答します; POSTの場合、ブラウザーは最初にヘッダーを送信し、サーバーは100(続行)で応答します、ブラウザーデータを再度送信すると、サーバーは200(データを返す)で応答します。

つまり、GETは商品を配達するために1台の車を走らせるだけで済み、POSTは2回実行する必要があります。最初に、サーバーにアクセスして挨拶します。「次回、商品のバッチを送信します。ドアを開けて私に挨拶し、「その後、商品を届けるために戻ります。

POSTは2つのステップを必要とし、少し時間がかかるため、GETはPOSTよりも効果的であるようです。

したがって、Yahooチームは、POSTをGETに置き換えることで、Webサイトのパフォーマンスを最適化することをお勧めします。

しかし、これは穴だ!飛び込むときは注意してください。

なんで?
 

  • GETとPOSTには独自のセマンティクスがあり、混在させることはできません。
  • 調査によると、良好なネットワーク環境では、1つのパケットを送信する時間と2つのパケットを送信する時間の差は基本的に無視できます。ネットワーク環境が悪い場合、2つのパケットのTCPは、データパケットの整合性を検証する上で大きな利点があります。
  • すべてのブラウザがPOSTでパケットを2回送信するわけではありません。たとえば、Firefoxはパケットを1回だけ送信します。



さて、インタビュアーからもう一度「GETとPOSTの違い」と聞かれたら、あなたの心はこんな感じですか?
 

公開された105元の記事 ウォンの賞賛4 ビュー5141

おすすめ

転載: blog.csdn.net/LBJ8888888/article/details/105354569