1、HTTP的请求方式
(1)HTTP有两种请求方式:
1、POST请求
2、GET请求
(2)GET请求一般用于从服务器获取信息,POST系列一般用于给服务器
推送信息,但是不论GET或者POST都可以把信息传递给服务器,也
能从服务器获取到结果,只不过是谁多谁少的问题;
一般来说:
GET:给的少,拿得多
POST:给的少,拿得多
(3)客户端怎么把数据传递给服务器:
- 问号传参 xhr.open('GET', './getData?xxx=xxx&zzz=zzz')
- 设置请求头 xhr.setRequestHeader([key],[value])
- 设置请求主体 xhr.send(请求主体内容)
(4)服务器怎么把信息返回给客户端:
- 通过响应头
- 通过响应主体(大部分信息都是基于响应主体返回的)
2、GET系列请求
(1)GET
(2)DELETE: 一般应用于告诉服务器,从服务器上删除点东西
(3)HEAD:只想获取响应头的内容,告诉服务器响应主体内容不
要了
(4)OPTIONS:试探性请求,发个请求给服务器,看看服务器能
否接收到,能不能返回
3、POST系列请求
(1)POST
(2)PUT和DELETE对应,一般是想让服务器把我传递的信息储存
到服务器上(一般应用于文件和大型数据内容)
4、GET系列和POST系列请求的本质区别
(1)GET系列传递给服务器信息的方式一般采用:问号传参
(2)POST系列传递给服务器信息的方式一般采用:设置请求主体
(3)GET传递给服务器的内容比POST少,因为URL有最长大小限制
(IE浏览器一般限制为2KB,谷歌浏览器一般限制为4~8KB,超过长
度的部分会被浏览器自动截取)
(4)POST方式请求主体中传递的内容理论上没有大小限制,但是在
真实项目中,为了保证传输速度,我们自己会加以限制
(5)另外GET请求会产生缓存,如果请求的URL相同,短时间多次请求,
浏览器可能会自动使用缓存,使用上一次的请求结果,很多情况下
我们想获取的是服务器最新的数据,因此,这种结果可能不是我们
想要的,因此我们要去除这个缓存:
解决办法有:问号传参添加随机数、问号传参添加当前时间戳
(6)GET相对于POST来说不安全,GET是基于问号传参传递给服务器
内容,有一种技术叫URL劫持,这样别人可以获取、篡改传递的信息,
而POST基于请求主体传递信息,不容易被劫持;
5、注意事项
(1)在真实项目中使用对应的请求方式,会使请求变得更加明确
不遵循这些方式也可以,最起码浏览器在语法上是允许的,但是这
些是开发者们之间约定俗成的规范
网友评论