HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法
幂等:如果使用同一种请求方法的多个等效请求对服务器的预期影响,与一个等效请求对服务器的预期影响一样,那么这种请求方法被认为是幂等的。
GET(幂等)
- 一般用于获取/查询资源信息,比如搜索排序、筛选,只能提交字符型数据
- 提交的数据会在地址栏显示出来
- 由于浏览器对地址栏长度的限制而导致传输的数据有限制(所谓的请求长度限制是由浏览器和 web 服务器决定和设置的,各种浏览器和 web 服务器的设定均不⼀样,这依赖于各个浏览器⼚家的规定或者可以根据 web 服务器的处理能⼒来设定)
- IE:2083个字符
- Firefox:65536个字符
- Safari:80000个字符
- Opera:190000个字符
- google:8182个字符
- 请求之后,结果会被浏览器缓存收纳,后续请求相同内容,从缓存中获取
POST(非幂等)
- 一般用于更新资源信息,可以提交任何类型的数据,如文件、视频、音频等
- 请求数据放在http包的包体中不会在地址栏显示出来
- 无传输数据限制
- 每次都需要从服务器获取相关资源
PUT(幂等)
- 从客户端向服务器数据取代指定的文档内容
- 通常指定了资源的存放位置
- 修改数据内容,但是不增加数据种类,无论进行多少次PUT操作,资源不会增加
- 浏览器在发PUT请求前会先发OPTIONS请求进行预检,看服务端是否可以接受PUT请求,若可以就在响应头添加字段告诉浏览器可以继续发送PUT请求:response[“Access-Control-Allow-Methods”] = “PUT”
- POST主要作用在一个集合资源上,而PUT主要作用在一个具体资源上
DELETE(幂等)
- 删除服务器中URL标识的资源,DELETE是幂等的
- 多次操作不会产生多余的副作用
- (返回什么状态码由什么决定??)
OPTIONS(幂等)
- 主要用途有两个:允许客户端查看服务器性能;获取服务器支持的HTTP请求方法(黑客经常使用的方法)
- 跨域之前发送嗅探请求,判断是否有对指定资源的访问权限
HEAD(幂等)
- 类似于get请求,不过返回的响应中没有具体内容,用于获取报头,HEAD请求响应可以被缓存
- 可以用来获取请求中隐含的元信息,而无需传输实体本身
- 检查资源、超链接的有效性;检查网页是否被串改;用于自动搜索机器人获取网页的标志信息、RSS种子信息,或者传递安全认证信息
TRACE
- 回显服务器收到的请求,主要用于测试或诊断
CONNECT
- HTTP/1.1协议中预留给可以将链接改成管道方式的代理服务器
- 通常用于SSL加密服务器的链接与非加密的HTTP代理服务器的通信