検索
ホームページバックエンド開発PHPチュートリアルHTTP の GET と POST の違いは何ですか?

HTTPのGETとPOSTの違い

GET と POST は HTTP リクエストの 2 つの基本的なメソッドであり、WEB 開発に携わったことがある人なら誰でもそれらの違いを見分けることができます。

最も直感的な違いは、GET では URL にパラメーターが含まれているのに対し、POST ではリクエスト本文を通じてパラメーターが渡されることです。

あなたは数え切れないほどの GET リクエストと POST リクエストを自分で書いたことがあるかもしれませんし、それらの違いをまとめた多くの信頼できる Web サイトを読んだことがあるかもしれません。

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

あなたは簡単に「標準的な答え」を与えました:

  • GET はブラウザがロールバックしても無害ですが、POST はリクエストを再度送信します。

  • GETで生成されたURLアドレスはブックマークできますが、POSTではブックマークできません。

  • GET リクエストはブラウザによってアクティブにキャッシュされますが、POST は手動で設定しない限りキャッシュされません。

  • GET リクエストは URL エンコードのみ可能ですが、POST は複数のエンコード方法をサポートしています。

  • GET リクエストのパラメータはブラウザ履歴に完全に保持されますが、POST のパラメータは保持されません。

  • GETリクエストのURLで送信されるパラメータには長さの制限がありますが、POSTには長さの制限がありません。

  • パラメータのデータ型に関しては、GET は ASCII 文字のみを受け入れますが、POST には制限がありません。

  • GET は、パラメータが URL 上で直接公開されるため、POST よりも安全性が低く、機密情報を渡すために使用することはできません。

  • GETパラメータはURLを通じて渡され、POSTはリクエストボディに配置されます。

(この標準的な回答は w3schools から参照されています)

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

真実を教えてください。 。 。

「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 に追加する必要があります。技術的には、これは完全に実現可能です。

それでは、「標準的な回答」の違いは何でしょうか?

私たちの World Wide Web の世界では、TCP はデータを転送するために使用されるものであり、欠落することはありません。しかし、道路を走るすべての車がまったく同じに見えるとしたら、緊急メッセージを伝える車が前から荷物を積んだ車によって妨げられ、交通システム全体が麻痺することは間違いありません。これを防ぐために、Traffic Rules HTTP が誕生しました。 HTTP では、GET、POST、PUT、DELETE など、自動車輸送用のいくつかのサービス カテゴリが設定されています。HTTP では、GET リクエストを実行するときは、自動車に GET のラベルを付ける必要があり (メソッドを GET に設定する)、Put を要求する必要があると規定しています。簡単に記録できるように、データを車の屋根(URL 内)に送信します。 POST リクエストの場合は、車に POST ラベルを貼り、商品を台車に載せる必要があります。もちろん、GET 中にこっそり車の中に商品を隠すこともできますが、これは非常に恥ずべきことであり、POST 中にデータを屋根に置くこともでき、人々は愚かに感じます。 HTTP は単なる行動規範であり、TCP は GET と POST の実装方法の基礎です。

ただし、HTTP が GET および POST パラメーター (URL またはリクエスト本文) の送信チャネルに要件を課していることだけがわかります。 「標準的な回答」のパラメータ サイズの制限はどこから来たのでしょうか?

私たちのワールドワイドウェブの世界には、運送会社というもう一つの重要な役割があります。異なるブラウザ (http リクエストを開始する) とサーバー (http リクエストを受け入れる) は、異なる運送会社です。 ただし、理論上は、車の屋根に無制限に商品を積むことができます (URL には無制限のパラメーターを追加できます)。しかし、運送会社もバカではありません。リスクを制御するために、荷積みと荷降ろしには非常にコストがかかります。データが多すぎると、ブラウザとサーバーに大きな負担がかかります。業界の不文律は、(ほとんどの)ブラウザは通常 URL の長さを 2K バイトに制限し、(ほとんどの)サーバーは最大 64K のサイズの URL を処理できるということです。超過分は処理されません。 GET サービスを使用してリクエスト本文にデータを秘密に隠した場合、サーバーによってはデータのアンロードと読み取りをサポートするものもあれば、リクエスト本文を直接無視するサーバーもあります。受け取ることは保証できません。

さて、GET と POST は本質的に TCP リンクであり、違いはないことがわかりました。ただし、HTTP 規制とブラウザ/サーバーの制限により、アプリケーション プロセスにはいくつかの違いがあります。

この記事がこのように終わると思いましたか?

私たちの大ボスはまだ登場を待っています。 。 。

このBOSSはどれほど神秘的ですか?インターネットで「GET と POST の違い」を調べようとすると、表示される検索結果にはその違いが記載されていません。彼は一体何者なのでしょうか? 。 。

GET と POST にはもう 1 つの大きな違いがあります。簡単に言えば、

GET は 1 つの TCP データ パケットを生成します。POST は 2 つの TCP データ パケットを生成します。

長い話:

GET リクエストの場合、ブラウザは http ヘッダーとデータを一緒に送信し、サーバーは 200 (データを返す) で応答します。

POST の場合、ブラウザは最初にヘッダーを送信し、サーバーが送信します。は 100 continue で応答し、ブラウザは再度データを送信し、サーバーは 200 ok (データを返す) で応答します。

言い換えると、GET では商品を届けるのに車で 1 回の移動が必要ですが、POST では 2 回の移動が必要で、最初の移動でサーバーに挨拶に行きます。「商品をまとめて配送します。」後でドアを開けて挨拶してください」と言い、商品を届けに戻ります。

POSTは2つのステップが必要で少し時間がかかるため、POSTよりもGETの方が効率的だと思われます。したがって、Yahoo チームは Web サイトのパフォーマンスを最適化するために、POST を GET に置き換えることを推奨します。しかし、これは罠です!慎重に飛び込んでください。なぜ?

1. GET と POST には独自のセマンティクスがあるため、簡単に混合することはできません。

2. 調査によると、ネットワーク環境が良好な場合、1 つの荷物を送信する時間と 2 つの荷物を送信する時間の差は基本的に無視できます。ネットワーク環境が劣悪な場合、2 つのパケットを使用する TCP はデータ パケットの整合性を検証する上で大きな利点があります。

3. すべてのブラウザが POST でパッケージを 2 回送信するわけではありません。Firefox は 1 回だけ送信します。

さて、面接官に「GETとPOSTの違い」を改めて聞かれたとき、あなたは心の中でこう感じていますか?

以上がHTTP の GET と POST の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPセッションを失敗させる可能性のあるいくつかの一般的な問題は何ですか?PHPセッションを失敗させる可能性のあるいくつかの一般的な問題は何ですか?Apr 25, 2025 am 12:16 AM

PHPSESSIONの障害の理由には、構成エラー、Cookieの問題、セッションの有効期限が含まれます。 1。構成エラー:正しいセッションをチェックして設定します。save_path。 2.Cookieの問題:Cookieが正しく設定されていることを確認してください。 3.セッションの有効期限:セッションを調整してください。GC_MAXLIFETIME値はセッション時間を延長します。

PHPでセッション関連の問題をどのようにデバッグしますか?PHPでセッション関連の問題をどのようにデバッグしますか?Apr 25, 2025 am 12:12 AM

PHPでセッションの問題をデバッグする方法は次のとおりです。1。セッションが正しく開始されるかどうかを確認します。 2.セッションIDの配信を確認します。 3.セッションデータのストレージと読み取りを確認します。 4.サーバーの構成を確認します。セッションIDとデータを出力し、セッションファイルのコンテンツを表示するなど、セッション関連の問題を効果的に診断して解決できます。

session_start()が複数回呼び出されるとどうなりますか?session_start()が複数回呼び出されるとどうなりますか?Apr 25, 2025 am 12:06 AM

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

PHPでセッションのライフタイムをどのように構成しますか?PHPでセッションのライフタイムをどのように構成しますか?Apr 25, 2025 am 12:05 AM

PHPでのセッションライフサイクルの構成は、session.gc_maxlifetimeとsession.cookie_lifetimeを設定することで達成できます。 1)session.gc_maxlifetimeサーバー側のセッションデータのサバイバル時間を制御します。 0に設定すると、ブラウザが閉じているとCookieが期限切れになります。

セッションを保存するためにデータベースを使用することの利点は何ですか?セッションを保存するためにデータベースを使用することの利点は何ですか?Apr 24, 2025 am 12:16 AM

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでカスタムセッション処理をどのように実装しますか?PHPでカスタムセッション処理をどのように実装しますか?Apr 24, 2025 am 12:16 AM

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

セッションIDとは何ですか?セッションIDとは何ですか?Apr 24, 2025 am 12:13 AM

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

ステートレス環境(APIなど)でセッションをどのように処理しますか?ステートレス環境(APIなど)でセッションをどのように処理しますか?Apr 24, 2025 am 12:12 AM

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール