get と post は初めてです。HTML プロトコル仕様に書かれているように、get はサーバーからリソースを取得するために使用され、post はフォーム データを送信するために使用されます。ユーザーがフォームに記入して送信ボタンをクリックすると、POST が送信されます。 request はフォームデータをサーバーに送信するために使用されますが、
脆弱性を調査する際に、一部のリクエストが get リクエストとして送信されていることがわかり、プロトコルの内容とあまり一致していなかったので、これについて疑問がありました。get と post の違いは何ですか? 情報を探していたところ、インターネットで記事を見つけました。
World Wide Web の世界では、TCP は車のようなものです。TCP を使用してデータを転送します。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 またはリクエスト本文) の送信チャネルに要件を課していることだけがわかります。「標準的な回答」のパラメータ サイズの制限はどこから来たのでしょうか?
私の大きな世界である World Wide Web には、運送会社というもう 1 つの重要な役割があります。
異なるブラウザ (http リクエストを開始する) とサーバー (http リクエストを受け入れる) は、異なる運送会社です。ただし、理論上は、車の屋根に無制限に商品を積むことができます (URL には無制限のパラメーターを追加できます)。しかし、運送会社もバカではありません、積み下ろしにも莫大なコストがかかりますし、リスクを抑えるために一回の荷物の量も制限しますし、データ量が多すぎるとブラウザやサーバーに多大な負担がかかります。
業界の不文律は、(ほとんどの)ブラウザは通常 URL の長さを 2K バイトに制限し、(ほとんどの)サーバーは最大 64K のサイズの URL を処理できるということです。超過分は処理されません。GET サービスを使用して、リクエスト本文にデータをこっそり隠した場合、サーバーによってその処理は異なります。データのアンロードと読み取りを支援するサーバーもあれば、データを直接無視するサーバーもあります。したがって、GET はリクエスト本文を取得できますが、受け取りを保証することはできません。
さて、GET と POST は本質的に TCP リンクであり、違いはないことがわかりました。ただし、HTTP 規制とブラウザ/サーバーの制限により、アプリケーション プロセスにはいくつかの違いがあります。
以下に述べるのは、
GET リクエストであっても POST リクエストであっても、それらはすべて TCP プロトコルに基づいて通信するということです。
GET リクエストであっても POST リクエストであっても、基礎となる通信ではデータの信頼性と整合性を確保するために TCP プロトコルを使用する必要があります。ブラウザーまたはアプリケーションが GET または POST リクエストを送信するとき、実際には TCP プロトコルを使用してサーバーと通信し、リクエスト データの信頼性の高い送信と応答データの正確な受信を保証します。
したがって、GET リクエストと POST リクエストはどちらも TCP プロトコルに基づいていると言え、TCP プロトコルは最下位層でデータ送信機能を提供する役割を担っています。
したがって、get と post の両方でリクエストを送信できます。
GET リクエストであっても POST リクエストであっても、これらはクライアントがサーバーにリクエストを送信する方法です。これら 2 つのメソッドを通じて、クライアントはサーバーにリソースを要求したり、フォーム データを送信したり、その他の操作を実行したりできます。
GET リクエストの場合、クライアントは URL のクエリ文字列にリクエスト パラメータを追加し、POST リクエストの場合、クライアントはリクエストの本文にリクエスト パラメータを含めて送信します。
GET リクエストでも POST リクエストでも、リクエストの送信やサーバーとの通信に使用できます。特定のニーズと操作に応じて、リクエストを送信するための適切な方法を選択できます。
Post はデータも取得できます。
POST リクエストは通常、サーバーにデータを送信するために使用されますが、データを取得するために使用することもできます。場合によっては、サーバーはクライアントに POST リクエストを通じて特定のデータ リソースを取得することを要求することがあります。
クライアントが POST リクエストを送信するとき、取得するデータを指定するためにリクエストにパラメータまたはリクエスト本文を含めることができます。サーバーは、この POST リクエストを受信すると、リクエスト内のパラメータまたはリクエスト本文に従って処理し、対応するデータ リソースを応答としてクライアントに返すことができます。クライアントは応答を解析することで必要なデータを取得できます。
たとえば、POST リクエストを使用してデータを取得する簡単な例は次のとおりです。
POST /data HTTP/1.1
Host: example.com
param1=value1¶m2=value2
上記の例では、クライアントは POST リクエストを example.com/data パスに送信し、リクエスト本文でパラメータ param1 と param2 を渡します。サーバーはリクエストを処理し、対応するデータをレスポンスとしてクライアントに返します。
したがって、POST リクエストは通常、データの送信に使用されますが、サーバー側の実装と規則によっては、データの取得にも使用できます。
それでは、 get はどのようにしてデータを取得するのでしょうか。
クライアントが GET リクエストを送信すると、リクエスト パラメータが URL のクエリ文字列に追加されます。つまり、リクエストされたデータはキーと値のペアにエンコードされ、URL の後ろに結合されます。サーバーはこの GET リクエストを受信すると、リクエスト内のパラメータに従ってそれを処理し、対応するデータを応答としてクライアントに返すことができます。
たとえば、GET リクエストを使用してデータを取得する簡単な例は次のとおりです。
GET /data?param1=value1¶m2=value2 HTTP/1.1
Host: example.com
上記の例では、クライアントは GET リクエストを example.com/data パスに送信し、URL クエリ文字列でパラメータ param1 と param2 を渡します。サーバーはこれらのパラメータに基づいてリクエストを処理し、対応するデータをレスポンスとしてクライアントに返します。
応答を解析することで、クライアントは必要なデータを取得できます。
要約すると、GET リクエストは主にサーバーからデータを取得するために使用され、取得したデータは URL クエリ文字列でパラメーターを渡すことによって指定されます。サーバーはこれらのパラメータに基づいてリクエストを処理し、対応するデータをレスポンスとしてクライアントに返します。