この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。
建築家
建築家
リスト
放送
茶屋
インテリジェントAI会話
.NETキャリア&テクニカルカレッジ
ちっちゃいなクズブログ
この版
利用者
Architect_Programmer_Code農業ネットワーク
»
建築家
›
フロントエンド設計とウェブ
›
HTML/CSS/JavaScript
›
GETとPOSTの違いはフォームの提出アクションです
眺める:
13672
|
答える:
1
[HTML/HTML5]
GETとPOSTの違いはフォームの提出アクションです
[リンクをコピー]
管理者
掲載地 2014/12/06 10:54:55
|
|
|
HTTPはサーバーとやり取りするさまざまな方法を定義しており、基本的にはGET、POST、PUT、DELETEの4つのメソッドがあります。 URLのフルネームはリソース記述子であり、URLアドレスのように考えられます。ネットワーク上のリソースを表すために使われ、HTTPのGET、POST、PUT、DELETEは、このリソースのチェック、修正、追加、削除の4つの操作に対応します。 この時点で、一般的な理解はできているはずです。GETは一般的にリソース情報の取得やクエリに使われ、POSTは主にリソース情報の更新に使われます。
1. HTTP仕様によれば、GETは情報検索に使用され、安全かつ冪等性であるべきです。
(1)いわゆるセキュリティとは、操作が情報を修正するのではなく、情報を取得するために使われることを意味します。 言い換えれば、GETリクエストには一般的に副作用が伴わないはずです。 つまり、データベースクエリと同様にリソース情報のみを取得し、リソースの状態を変更、追加、変更はしません。
* 注:ここでのセキュリティの意味は、修正されていない情報のみを指します。
(2)冪等とは、同じURLへの複数のリクエストが同じ結果を返すことを意味します。
しかし、実際の運用においては、上記の2つの規則はそれほど厳しくありません。 他人の記事を引用する例:例えば、ニュースサイトのトップページは常に更新されています。 2つ目のリクエストは異なるニュースの一括トリビューションを返しますが、常に最新のニュースを返すため、この操作は安全かつ冪高と見なされます。 根本的に、ユーザーがリンクを開く際に、そのリソースが自分の視点から変更されていないと確信できるのが目標であれば、
2. HTTP仕様によると、POSTはサーバー上のリソースを変更する可能性のあるリクエストを表します。 上記の例を引用すると、まだニュースです。ウェブサイトを例に挙げると、読者は自分のコメントをニュースに投稿すべきです。なぜなら、コメントが提出されたり、リソースが変更されたりすると、サイトのリソースが異なるからです。
上記では、HTTP仕様におけるGETとPOSTの原則について大まかに説明しています。 しかし、多くの人が実際にHTTP仕様に従っていないため、以下のような多くの理由が生じます。
1. 多くの人はPOSTを使うためにFORMにアクセスする必要があるため、リソースを更新するためにGETを使っています。これは少し手間がかかるでしょう。
2. リソースの追加、削除、修正、チェックの操作は、PUTやDELETEを使わずにGET/POSTで実際に完了できます。
3. もう一つは、初期のWeb MVCフレームワーク設計者がURLを抽象的なリソースとして意識的に扱い設計していなかったため、深刻な問題は従来のWeb MVCフレームワークが基本的にGETとPOSTの2つのHTTPメソッドのみをサポートし、PUTとDELETEメソッドをサポートしていないことです。
* MVCの簡単な説明:MVCは元々デスクトッププログラムに存在し、Mはデータモデル、Vはユーザーインターフェース、Cはコントローラーを指します。 MVCを使用する目的は、MとVの実装コードを分離し、同じプログラムでも異なる表現を使えるようにすることです。
上記の3つのポイントは、HTTP仕様に厳密に従うことなく旧スタイルを説明していますが、アーキテクチャの開発に伴い、HTTP仕様をサポートする新しいスタイルであるREST(Representational State Transfer)が登場しました。
原理問題について話した後、表面現象からのGETとPOSTの違いを見てみましょう。
1. GETリクエストのデータはURLに付加されます(つまり、データはHTTPプロトコルヘッダーに置かれます)、そして? URLを分割してデータを送信し、パラメータは & で結びつけられます。例えば:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。 データが英語の文字や数字ならそのまま送信し、スペースなら+に変換し、中国語や他の文字ならBASE64で直接暗号化して、例えば以下のようなサンプルを得ます:%E4%BD%A0%E5%A5%BD(ここでXXのXXは16進数の記号で表されるASCII)。
POSTは提出されたデータをHTTPパケットのパケット本体に配置します。
2.「GETメソッドで提出できる最大データ量は1024バイトに制限され、理論上POSTには制限がなく、IIS4では最大80KB、IIS5では最大100KBの大量データ転送が可能です??!
上記の文は他の記事からリダイレクトされたもので、実際、こう言うのは誤りであり不正確です。
(1)まず、「GETメソッドで提出されるデータは最大でも1024バイトに過ぎない」という点です。なぜならGETはURLを通じてデータを提出するため、GETで提出できるデータ量はURLの長さに直接関係しているからです。 実際、URLに上限パラメータはなく、HTTPプロトコル仕様もURLの長さを制限していません。 この制限は特定のブラウザやサーバーによって課される制限です。 IEのURL長制限は2083バイト(2K+35)です。 NetscapeやFireFoxなど他のブラウザでは理論的な長さ制限がなく、その制限はオペレーティングシステムのサポートに依存します。
これはパラメータ値のデータ長だけでなく、URL全体の長さを制限することに注意してください。 [参考文献5参照]
理論的には、POSTにはサイズ制限がなく、HTTPプロトコル仕様にもサイズ制限はありません。また、「POSTデータのサイズ制限が80K/100K」と言うのは正確ではありません。POSTデータには制限がなく、制限はサーバーのハンドラの処理能力にあります。
ASPプログラムの場合、Requestオブジェクトは各フォームフィールドを処理する際に100Kのデータ長制限があります。 しかしRequest.BinaryReadではそのような制限はありません。
これからさらに、IIS 6.0ではセキュリティ上の理由から制限を強化しました。 また、以下の点にも注意を払う必要があります:
1). IIS 6.0では、最大200KBのASP POSTデータがデフォルトで、フォームフィールドあたり100KBの制限があります。
2). IIS 6.0アップロードファイルのデフォルトサイズは4MBです。
3). IIS 6.0では、最大リクエストヘッダーは16KBに設定されています。
これらの制限はIIS 6.0以前には存在しませんでした。 [参考文献5参照]
つまり、上記の80Kと100Kはデフォルトの値かもしれません(注:IIS4とIIS5のパラメータはまだ確認していません)が、自分で設定することは確実に可能です。 これらのパラメータのデフォルト値はIISの各バージョンで異なるため、詳細は関連するIIS設定ドキュメントをご参照ください。
3. ASPでは、サーバーはGET requestパラメータを取得するためにRequest.QueryStringを使い、POSTリクエストパラメータを取得するためにRequest.Formを使用します。 JSPではrequest.getParameter(\"XXXX\")を使って取得できますが、jspにはrequest.getQueryString()メソッドもありますが、使い方がより面倒です。例えば、test.jsp?name=hyddd&password=hydddを送信し、request.getQueryString()で:name=を取得します。hyddd&password=hyddd。 PHPでは、$_GETと$_POSTでそれぞれGETとPOSTからデータを取得でき、$_REQUESTはGETとPOSTの両方のリクエストからデータを取得できます。 JSPでrequestを使い、PHPで$_REQUESTを使うことに隠れた危険があることは注目に値します。これは次回の記事でまとめます。
4.POST GETよりも安全です。 注:ここで言及されているセキュリティは、上記のGETで言及された「セキュリティ」とは異なる概念です。 例えば、GETを通じてデータを提出した場合、ユーザー名とパスワードはURLに平文で表示されます。なぜなら、(1) ログインページがブラウザにキャッシュされていること、(2) 他の人がブラウザの履歴を閲覧するため、他の人があなたのアカウントやパスワードを入手できるからです 偽造攻撃。
まとめると、Getはサーバーにデータを要求するリクエストであり、Postはサーバーにデータを提出するリクエストです。FORMではメソッドはデフォルトで「GET」となります。本質的には、GETとPOSTは単に異なる送信メカニズムであり、単に一つの送信機構を送るわけではありません!
先の:
QQ絵文字の画像を素早く抽出してください
次に:
コンピュータ協会はH3Cの技術者を雇い、協会のメンバーにネットワークについて教えました
関連記事
•
オブジェクトは保存されていない過渡インスタンスを参照します - 遷移インスタンスを保存...
•
Tencent Analyticsを有効にした後はシステムが忙しいので、後で再度お試しください
試験
掲載地 2014/12/07 17:24:18
|
読んで返信することは美徳です
閲覧したセクション
ごみ箱
安全な攻防
UIデザイン
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。
Mail To:help@itsvse.com