get一般用来获取信息,post一般用来提交更新数据
get参数放在在url那里,可见,因为url有长度限制,所以参数也有长度限制,而且直接暴露在外面,相对来说不太安全
post的参数放置在request body里面,无长度限制
部分浏览器会对get请求进行主动缓存,并且其参数路径会保留在浏览器的历史记录上,
post不会进行主动缓存,需要手动设置
get只允许ASCII字符,post无限制
简单请求
凡是同时满足以下两种情况的就是简单请求,反之则非简单请求,浏览器对这两种请求的处理不一样
- 请求方法是以下方三种方法之一
- HEAD
- GET
- POST
- HTTP的头信息不超出以下几种字段
- Accept
- Accept-Language
- Content-Language
- Last-Event-ID
- Content-Type:只限于三个值
application/x-www-form-urlencoded
、multipart/form-data
、text/plain
复杂请求:
非简单请求就是复杂请求。
复杂请求在正式请求前都会有预检请求(OPTIONS请求),用于向服务器请求权限信息的。 options----询问作用
axios 都是复杂请求,ajax 可以是简单请求。
浏览器先询问服务器,当前网页所在的域名是否可以请求您的服务器,以及可以使用那些HTTP
动词和头信息,只有得到正确的答复,才会进行正式的请求
"预检"
使用的请求方法是 OPTIONS
, 表示这个请求使用来询问的
预检
请求用的请求方法是OPTIONS,表示这个请求是用来询问的。头信息里面,关键字段是Origin
,表示请求来自哪个域。 除了Origin
,预检
请求的头信息包括两个特殊字段:
- Access-Control-Request-Method: 必选,用来列出浏览器的CORS请求会用到哪些HTTP方法
- Access-Control-Request-Headers:该字段是一个用逗号分割的字符串,执行浏览器CORS请求会额外发送的头信息字段
预检请求通过后就会发送正经的http请求