フォームのmethod=post/getの違い

フォームのmethod=post/getの違い
フォームは、get と post の 2 つのデータ転送方法を提供します。どちらもデータを送信する方法ですが、実際の送信方法は非常に異なり、データに重大な影響を与える可能性があります。 Web コンテナーは変数値の取得を容易にするために 2 つの違いの一部を隠していますが、2 つの違いを理解しておくと、将来のプログラミングに非常に役立ちます。

フォームの get メソッドと post メソッドは、データ転送時に HTTP プロトコルの GET メソッドと POST メソッドにそれぞれ対応します。両者の主な違いは次のとおりです。

1. Get はサーバーからデータを取得するために使用され、Post はサーバーにデータを渡すために使用されます。

2. Get は、フォーム内のデータを、変数 = 値の形式で action が指す URL に追加し、両者を「?」で接続し、各変数を「&」で接続します。Post は、フォーム内のデータをフォームのデータ本体に格納し、変数と値の対応する形式で action が指す URL に渡します。

3. Get は、送信プロセス中に要求された URL にデータが配置されるため、安全ではありません。多くの既存のサーバー、プロキシ サーバー、またはユーザー エージェントは、要求された URL をログ ファイルに記録し、それをどこかに置きます。この方法では、一部の個人情報が第三者に見られる可能性があります。さらに、ユーザーは送信されたデータをブラウザ上で直接確認することもでき、一部の内部システムメッセージもユーザーに表示されます。すべての投稿操作はユーザーには見えません。

4. Get で送信されるデータ量は少なく、これは主に URL の長さの制限によるものです。一方、Post は大量のデータを送信できるため、ファイルをアップロードするときには Post のみを使用できます (もちろん、別の理由もありますが、これについては後で説明します)。

5. Get は、Form フォームのデータ セットの値を ASCII 文字に制限しますが、Post は ISO10646 文字セット全体をサポートします。

6. Get は Form のデフォルト メソッドです。

Post で送信されたデータは、エンコードを設定することで正しく中国語に変換できますが、Get で送信されたデータは変更されません。今後の手続きではこの点に注意する必要があります。

_________________________________________________________________________________________________

1. Get メソッドは、URL 要求を通じてユーザー データを送信します。フォーム内の各フィールドの名前とその内容を文字列のペアで結び付け、http://www.mdm.com/test.asp?name=asd&password=sad のように、action 属性で指定されているプログラムの URL の後ろに配置します。ユーザーがリンクをクリックするのと同じように、データは URL に直接表示されます。Post メソッドは、HTTP ポスト メカニズムを使用して、フォーム内の各フィールドの名前とその内容を HTML ヘッダーに配置し、action 属性で指定されているプログラムで処理できるようにサーバー側に送信します。プログラムは、標準入力 (stdin) メソッドを通じてフォーム データを読み取って処理します。

2. Getメソッドは変数の値を取得するためにRequest.QueryStringを使用する必要がありますが、Postメソッドは送信されたコンテンツにアクセスするためにRequest.Formを使用します。

3. Get メソッドで送信されるデータ量は非常に少なく、通常は約 2 KB に制限されていますが、実行効率は Post メソッドよりも優れています。Post メソッドで送信されるデータ量は比較的多く、サーバーがデータを読み取るのを待ちますが、バイト制限もあります。これは、大量のデータによるサーバーへの悪意のある攻撃を回避するためです。Microsoft によると、Microsoft は Request.Form() を使用して受信できる最大データに制限を設けており、IIS 4 では 80 KB、IIS 5 では 100 KB です。

提案: 送信するデータが一度に送信できるかどうか確信が持てない場合は、Post メソッドを使用してください。

4. Get メソッドを使用してデータを送信すると、セキュリティ上の問題が発生します。たとえば、ログイン ページで Get メソッドを使用してデータを送信すると、ユーザー名とパスワードが URL に表示されます。ページがキャッシュされるか、他の人がクライアントのマシンにアクセスできる場合、履歴レコードからユーザーのアカウントとパスワードを取得できます。したがって、フォームの送信には Post メソッドを使用することをお勧めします。Post メソッドを使用して送信されたフォーム ページでよくある問題は、ページを更新するとダイアログ ボックスがポップアップ表示されることです。

提案: セキュリティ上の理由から、データの送信にはPostを使用することをお勧めします

<<:  デザイン参考 WordPressウェブサイト構築成功事例

>>:  CSSはラジオをクリックして2つの画像スタイルを切り替えますが、複数のラジオのうち1つだけをチェックできます。

推薦する

LinuxカーネルとSVNバージョン間の競合の解決策

現象システムは Linux システムカーネルを正常にコンパイルできましたが、SVN をインストールし...

Windows7 での Mysql5.7 my.ini ファイルの読み込みパスとデータの場所の変更方法

更新: MySQL の公式 Web サイトにアクセスして MySQL インストーラーをインストールし...

Windows10 での MySQL msi インストール チュートリアル (画像とテキスト付き)

1. ダウンロード1. MySQL msi 公式 Web サイトから最新のダウンロードをクリックす...

デザイン: 意志の強いデザイナー

<br />長年の専門的なアートデザイン教育を通じて「美とは何か」を学びましたが、「美を...

Tomcatはスレッドプールを使用してリモート同時リクエストを処理します。

Tomcatが同時リクエストを処理する方法を理解することで、スレッドプール、ロック、キュー、および...

VirtualBox は CentOS7 仮想マシンと拡張ツールをインストールします (画像とテキスト)

コンピュータシステム: win7この記事は主に写真に基づいており、多くの写真が含まれていますCent...

Vuexの役割についての深い理解

目次概要コンポーネント間でデータを共有する方法Vuex の原則の紹介Vuexはコンポーネントのグロー...

方言変換のためのApache Calciteコード

意味Calcite は、Sql を SqlNode に解析し、次に SqlNode を特定のデータベ...

vue2 vue3 での Echarts の詳細な使用方法

目次1. インストール2. vue2でEchartsを使用するmain.jsファイル内コンテナが与え...

WeChatミニプログラムが星評価を実装

この記事では、WeChatアプレットで星評価を実装するための具体的なコードを参考までに紹介します。具...

Linux でのデータベースのスケジュールバックアップの実装スクリプト

目次シナリオ: サーバーデータベースを毎日定期的にバックアップする必要がある1. まずバックアップス...

HTML の doctype とエンコーディングに関する簡単な説明

文書タイプDoctype は、指示を解析するためにどのバージョンの HTML を使用するかをブラウザ...

VMware仮想マシンを使用してUbuntu 20.04をインストールする完全なチュートリアル

Ubuntu は比較的人気のある Linux デスクトップ システムです。最近、Ubuntu 20....

CSSスクロールバースタイル設定の実装

Webkit スクロールバー スタイルのリセット1. スクロールバーには、スクロールバー ボタンとト...