まず、取得およびポストは、2つの方法の単なるHTTPプロトコル要求根本的に異なるものではなく、輸送上の同じトランスポートプロトコルで使用されているに違いはありません。
し1.Getポストメッセージの違い
2つの方法の唯一のHTTPプロトコルのGETおよびPOST要求を、HTTPプロトコルがトランスポート層プロトコルに関係なく、GETまたはPOSTの、TCP / IPベースのアプリケーション層プロトコルでは同じであるので、送信は、違いはありません。
パケットフォーマットは、パラメータなしで、最大の違いは、メソッド名の最初のラインであります
POSTメソッド要求パケットは、最初の行のことです POST /uri HTTP/1.1 \r\n
GETメソッド要求パケットが最初の行するようなものです GET /uri HTTP/1.1 \r\n
引数タイムズの記事との違いは、GETメソッドのパラメータは、URLに配置する必要があり、POSTメソッドのパラメータは、体内に配置する必要がありますされます
メッセージの方法の簡単なバージョンを取得します:
GET /index.php?name=xiaoming.c&age=3 HTTP/1.1
Host:
localhost
POSTメソッドメッセージの簡易版:
POST /index.php HTTP/1.1 Host: localhost Content-Type: application/x-www-form-urlencode
name=qiming.c&age=22
違い2. GETとPOSTメソッドのセキュリティ
データがアドレスバーに表示されていないため、オンライン記事のほとんどを説明するためによると、POSTは、セキュリティをGETよりも、
HTTPは、ネットワーク・ノード上のキャッチパケット限り、ネットワーク上で平文で送信されるためしかし、伝送の観点から、彼らは、安全ではない、あなたは完全なデータパケットを取得することができます。
伝送を確保するために、暗号化のみがHTTPSです。
3. GETメソッドには限界がありますか?1024キロバイトまで?
制限を提出していないためにGETメソッドのURLパラメータデータサイズ
HTTPプロトコルは、ボディとURLの長さを制限しない、制限のURLは、主な理由のブラウザとサーバです。
ブラウザメーカーが設定したため、サーバーが(悪意のある攻撃と長いURLを防ぐために)、パフォーマンスとセキュリティのために、より多くのリソースを消費することを検討して、URLの長さの制限を与え、長いURLを処理しているためで、ブラウザということです。
2つのパケットを生成する4. POSTメソッド?
いくつかの上述の観点、ポストは別ヘッダとボディ、第一送信ヘッダが送信され、ステータスコードは、本体を送信サーバ100から返されました。
HTTP 协议中没有明确说明 POST 会产生两个 TCP 数据包,而且实际测试(Chrome)发现,header 和 body 不会分开发送。
所以,header 和 body 分开发送是部分浏览器或框架的请求方法,不属于 post 必然行为。
5. “get常用于获取数据,post用于提交数据”
虽然get的确常被用于获取数据,但post也可以在一些UI框架被用于取回数据
get和post用途也是因地制宜,要根据实际情况来决定用哪个方法。