POST 与 GET
POST 和 GET 请求的异同
表层:
- GET 在浏览器可以回退, 而 POST 则会再次提交请求
- GET 的 URL 可以被 Bookmark, ⽽ POST 不可以.
- GET 请求会被浏览器主动缓存, 而 POST 不会, 除⾮手动设置.
- GET 请求参数会被完整保留】留在浏览器历史记录里, ⽽ POST 中的参数不会被保留.
- GET 请求的数据只能进行 URL 编码, ⽽ POST ⽀持多种编码⽅式.
- GET 请求在 URL 中传送的参数是有长度限制的 (URL 的最⼤长度是 2048 个字符), ⽽ POST 没有.
- 对参数的数据类型, GET 只接受 ASCII 字符, ⽽而 POST 没有限制.
- GET ⽐ POST 更不安全, 因为参数直接暴露在URL上, 所以不能⽤用来传递敏敏感信息.
- GET 参数通过 URL 传递, POST 放在 Request body 中
深层:
- GET 产⽣一个TCP数据包;POST产生两个TCP数据包.
- GET: 浏览器会把 http 的 header和data⼀并发送出去, 服务器响应200(返回数据);
- POST: 浏览器先发送 header, 服务器器响应 100 continue, 浏览器再发送data, 服务器响应 200 (返回数据).