1、GET 和 POST,是 HTTP 定义的两种请求方式(当然还有其他请求方式)
2、GET 和 POST 的区别
- 请求缓存:GET 会被缓存,而 POST 不会
- 收藏书签:GET 可以,而 POST 不能
- 保留浏览器历史记录:GET 可以,而 POST 不能
- 用处:GET 常用于取回数据,POST 用于提交数据(提交表单或上传文件,但也被一些ui框架用于取回数据)
- 安全性:POST 比 GET 安全(GET 提交数据还可能会造成 CSRF 攻击)
- 请求参数:queryString 是 url 的一部分,GET、POST 都可以带上。 GET 的 queryString(仅支持 urlencode 编码),POST 的参数是放在 body(支持多种编码)
- 请求参数长度限制:GET 对请求数据长度有限制(不同浏览器限制不同,以最低标准为准 2k 即可),POST 对请求数据没有限制
- GET 产生一个 TCP 数据包;POST 产生两个 TCP 数据包。
长的说:
对于 GET 方式的请求,浏览器会把 http header 和 data 一并发送出去,服务器响应 200 ok(返回数据);
而对于 POST 方式的请求,浏览器先发送 http header,服务器响应 100 continue,浏览器再发送 data,服务器响应 200 ok(返回数据)。
3、HTTP 状态码
- 200 OK - 请求成功
- 404 Not Found - 服务器无法找到被请求的页面
- 500 - 请求异常,服务器遇到不可预知的情况