HTML でリクエストを取得および投稿する

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&param2=value2

上記の例では、クライアントは POST リクエストを example.com/data パスに送信し、リクエスト本文でパラメータ param1 と param2 を渡します。サーバーはリクエストを処理し、対応するデータをレスポンスとしてクライアントに返します。

したがって、POST リクエストは通常​​、データの送信に使用されますが、サーバー側の実装と規則によっては、データの取得にも使用できます。

それでは、 get はどのようにしてデータを取得するのでしょうか。

クライアントが GET リクエストを送信すると、リクエスト パラメータが URL のクエリ文字列に追加されます。つまり、リクエストされたデータはキーと値のペアにエンコードされ、URL の後ろに結合されます。サーバーはこの GET リクエストを受信すると、リクエスト内のパラメータに従ってそれを処理し、対応するデータを応答としてクライアントに返すことができます。

たとえば、GET リクエストを使用してデータを取得する簡単な例は次のとおりです。

GET /data?param1=value1&param2=value2 HTTP/1.1
Host: example.com

上記の例では、クライアントは GET リクエストを example.com/data パスに送信し、URL クエリ文字列でパラメータ param1 と param2 を渡します。サーバーはこれらのパラメータに基づいてリクエストを処理し、対応するデータをレスポンスとしてクライアントに返します。

応答を解析することで、クライアントは必要なデータを取得できます。

要約すると、GET リクエストは主にサーバーからデータを取得するために使用され、取得したデータは URL クエリ文字列でパラメーターを渡すことによって指定されます。サーバーはこれらのパラメータに基づいてリクエストを処理し、対応するデータをレスポンスとしてクライアントに返します。

おすすめ

転載: blog.csdn.net/m0_51553670/article/details/131426497