GET
メソッドと POST
メソッドの使用の違いは何ですか?どちらがより安全ですか?それぞれの長所と短所は何ですか?
(同様の質問)
P粉8845486192023-10-15 14:16:09
ユーザーがフォームに情報を入力して「送信」をクリックすると、情報は URL または HTTP リクエストの本文の 2 つの方法でブラウザからサーバーに送信されます。
前の例で使用した GET メソッドは、名前と値のペアを URL に追加します。残念ながら、URL の長さは制限されているため、このメソッドは非常に少数のパラメーターでのみ機能します。フォームで多数のパラメータが使用されている場合、またはパラメータに大量のデータが含まれている場合、URL が切り詰められる可能性があります。さらに、URL で渡されたパラメータはブラウザのアドレス フィールドに表示されますが、これはパスワードを表示するのに最適な場所ではありません。
GET メソッドの代替手段は POST メソッドです。このメソッドは、HTTP リクエストの本文で名前と値のペアをラップするため、URL がクリーンになり、フォーム出力にサイズ制限がなくなります。安全性も高いです。
P粉0020233262023-10-15 12:54:06
これはセキュリティ上の問題ではありません。 HTTP プロトコルは GET タイプのリクエストを idempotent として定義しますが、POST には副作用がある可能性があります。簡単に言うと、これは、何かを変更せずに表示するには GET が使用され、何かを変更するには POST が使用されることを意味します。たとえば、検索ページでは GET を使用し、パスワードを変更するフォームでは POST を使用する必要があります。
また、PHP ではこれらの概念が多少混同されていることに注意してください。 POST リクエストは、クエリ文字列とリクエスト本文から入力を受け取ります。 GET リクエストはクエリ文字列から入力を取得するだけです。したがって、POST リクエストは GET リクエストのスーパーセットです。POST リクエストで $_GET
を使用したり、$_POST
と $_GET# で同じ名前を使用したりできます。 ## パラメータの意味は異なります。
$_GET['id'] を介して取得できます)。しかし、投稿 ID を変更したいとします。新しい ID はリクエスト本文 (
$_POST['id']) に表示されます。これは最良の例ではないかもしれませんが、違いを説明できれば幸いです。