序文
ウェブを研究した友人は、HTTPの2つのクライアントデータリクエストメソッドであるGETとPOSTを理解している必要がありますが、2つの特定の違いには、まだGETとPOSTを完全に区別できない多くの小さなパートナーがいる必要があります。多くの友達が面接に参加すると言っているので、面接で自分の顔を見せびらかすことができるようになります。
両方の紹介
GET和POST是浏览器客户端向服务器端请求数据的两种基本方法,相必学过Javaweb的小伙伴在学习Javaweb三大核心组件之一的servlet是,在实现servlet的方法是会涉及到doGet()和doPost()两种方法,这两种方法就是针对于客户端不同的提交方式作出不同的响应。在get与post的两种请求方式中就必须要提到HTTP协议。
HTTPプロトコル
相必学过网络的人对HTTP都不陌生,HTTP作为一种超文本传输协议,基本上每天我们上网都不可避免的接触到HTTP,HTTP是一种基于请求响应的通信协议,客户端对服务器发出一个取得资源的请求,服务器将要求得资源响应给客户端,每次的联结只作为一次请求/响应,是一种很简单的通行协议,没有请求就没有响应。
HTTP协议之下,服务器是一个健忘的家伙,服务器响应客户端后,就不会记得客户端的信息,更不会去维护与客户端有关的状态,因此HTTP又称无状态的通行协议
違い
最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数,这也是get方法不安全的主要原因
get to request dataを使用すると、ブラウザは要求されたデータをURLに配置するため、一部の個人情報は簡単に検出できます。
データリクエストを行う場合、ユーザー名ファン、パスワードファン
データリクエストを行うと、入力したユーザー名とパスワードがURLに表示されるため、安全ではありません。
投稿はリクエスト本文を介してパラメータを渡し、URLに直接公開されないため、投稿は取得するよりも安全です。
GET在浏览器回退/刷新时是无害的,而post会再次提交数据
べき等になるように設計する
幂等(idempotent、idempotence)是一个数学或计算机学概念,常见于抽象代数中。
幂等有一下几种定义:
对于单目运算,如果一个运算对于在范围内的所有的一个数多次进行该运算所得的结果和进行一次该运算所得的结果是一样的,那么我们就称该运算是幂等的。比如绝对值运算就是一个例子,在实数集中,有abs(a)=abs(abs(a))。
对于双目运算,则要求当参与运算的两个值是等值的情况下,如果满足运算结果与参与运算的两个值相等,则称该运算幂等,如求两个数的最大值的函数,有在在实数集中幂等,即max(x,x) = x。
したがって、継続的な更新がある場合は、GETメソッドを使用するのが適切です。
その他の大きな違い
1,GET方法只接受ASCLL字符,而POST没有限制,允许二进制。
2,GET在浏览器回退/刷新时是无害的,而post会再次提交数据
3,GET请求只能进行URL编码,而post支持多种编码方式
4,GET产生的URL地址可以被Bookmark,而POST不可以。
5,GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
6,ET请求在URL中传送的参数是有长度限制的,而POST么有。
ブラウザのURLの長さの制限は通常ブラウザによって異なり、一般的な制限は2kです。URLが長すぎるため、ブラウザから要求されたデータが受け入れられない場合があります。そのため、通常、HTMLフォームに入力されるフィールドの長さは2kを超えない。GETを使用できます。
ブラウザがロールバック/更新したときにGETが無害であり、投稿によってデータが再度送信される場合
取得と投稿の該当するステータス
GETに適用される以下の条件を満たす
1,请求是为了查找资源,HTML表单数据仅用来帮助搜索。
2, 请求结果无持续性的副作用。
3, 收集的数据及HTML表单内的输入字段名称的总长不超过1024个字符
POSTに適用される以下の条件を満たす
1,请求的结果有持续性的副作用,例如,数据库内添加新的数据行。
2,若使用GET方法,则表单上收集的数据可能让URL过长。
3,要传送的数据不是采用7位的ASCII编码。
GETとPOSTのコア比較テーブル
操作方法 | データの場所 | 平文暗号文 | データセキュリティ | 長さ制限 | アプリケーションシナリオ |
---|---|---|---|---|---|
取得する | HTTPヘッダー | 平文 | 安全ではありません | 短いトランスミッション | クエリデータ |
役職 | HTTPボディ | 明確で秘密 | 安全性 | 大規模なデータ転送をサポート | データを変更する |