只有当使用表单form,并且form 标签的method 设置为POST 时,才是POST 请求方式,其余所有请求都是GET 方式。
1、区别
1.1 GET
请求在请求行上提交数据,格式为:uri?name=value&age=value…
这种提交方式提交的数据会显示在浏览器地址栏上,提交的数据长度有限制。
只能提交字符串数据。
取资源用。
1.2 POST
请求在请求体中提交数据,相对安全,格式:name=value&age=value
不会在浏览器上显示,提交数据没有长度限制。
可以提交任何数据,包括视频等,上传文件只能用post。
无缓存,传资源或修改资源用。
1.3 总结:
GET请求 | POST请求 |
---|---|
会在浏览器中显示处数据 | 不显示 |
数据长度有限制 | 无限制 |
只能提交字符串数据 | 任何数据 |
有缓存 | 无缓存 |
取资源用 | 传资源 或 修改资源用 |
2、使用
有敏感数据,传输数据不是普通字符串,数据量非常多,必须用POST请求。
修改服务器资源用POST请求。
GET请求多数从服务器取资源,该资源短时间不会改变,缓存起来;
POST为了修改服务器资源,每次修改结果不同,没必要缓存。
3、补充
3.1 请求协议和响应协议
请求协议包括四部分:请求行、消息报头、空白行、请求体
请求行包括:请求方式 空格 URI 空格 协议版本号
空白行:专门用来分离消息报头和请求体
响应协议包括四部分:状态行、响应报头、空包行、相应体
状态行包括:协议版本号 空格 状态码 空格 状态描述信息
空白行:专门用来分离响应报头和响应体
3.2 浏览器缓存
浏览器将资源缓存之后,缓存资源是和某个特定的路径绑定在一起的,只要浏览器再发送这个相同的请求路径,这个时候回去缓存中获取资源,不再访问服务器,以这种方式降低服务器压力,提高用户体验。
但是,有的时候我们不希望有缓存,希望每次都访问服务器,可以在访问路径后面添加时间戳。