Http协议:网络传输协议,这个协议规定了客户端和服务器之间得通讯规则。
Http协议,规定了客户端在向服务器发送请求得时候,需要携带得内容:
客户端的一次请求需要携带以下内容:
1> 请求头:请求头中包含了一些键值对的信息。
Accept: 客户端告诉服务器,此次请求希望得到什么类型的内容。(application/json, text, html, data)。尽量让服务器返回客户端能够加载的数据。
Accept-Encoding:客户端告诉服务器,尽量返回gzip,br类型的包。
Accept-Language:客户端告诉服务器,尽量返回什么语言。
Connection:keep-alive(客户端和服务器一旦建立链接,在一段时间内,保持这个链接状态。)
Http协议的版本是1.0版本,在1.0之前,客户端和服务器之间的连接属于短链接,一旦服务器给客户端响应之后,连接会立刻断开。1.0开始,不在频繁的连接和断开。
客户端和服务器之间建立一次连接,需要经过三次握手。
客户端和服务器之间断开一次连接,需要经过四次分手。
Cookie:用来标识用户身份或者是连接状态的键。因为Http本身是无状态的协议,请求和请求之间没有任何联系。
Host:表明客户端访问的服务器主机地址。www.baidu.com
baidu.com:主域名
www.baidu.com/map.baidu.com/mp4.baidu.com都是二级域名
http://www.baidu.com 域名:url地址/网址。域名是用来包装服务器地址的,它是类似于IP的纯数字组成的。
域名的出现就是为了方便记忆。但是域名最终是会被DNS解析成为真实地址的。
Referer:表明客户端是从哪个页面访问的百度首页。
User-Agent:浏览器标识,表明用什么平台访问的服务器。
2> 请求行
请求方法:GET、POST、PUT | DELETE、UPDATE、HEAD
GET:客户端向服务器发送了一次GET请求。一般在客户端向服务器请求(获取)资源的时候使用。
GET请求可以向服务器传递少量的数据:请求参数,以?和&拼接参数。
这种请求方式对URL长度有限制,一般最多只能识别1024个字符,所以如果需要传输大量数据,也不适合使用GET请求,并且GET请求会把参数值直接暴露在URL地址中,不适合传输私密数据。
总结:1. 少量数据;2. 非重要数据;3. 单纯的获取数据;使用GET。
例如:http://www.baidu.com?id=100&username=zhangsan
POST:该请求一般是需要在服务器上创建一个资源(数据)的时候使用。
POST请求可以向服务器传递大量数据,这个数据一般称为表单数据,这个数据不是放在url后面了,而是单独的保存在请求体中,发送给服务器。服务器会将这些数据保存在服务器端。
总结:1. 大量数据;2. 重要数据;3. 不再是获取数据,而是向服务器提交数据;使用POST。
PUT: 该请求一般是需要更新服务器上的资源的时候使用。
PUT请求也需要向服务端传递数据,而且数据也是存放在请求体中的。
Http协议版本:
请求地址:
3> 请求体:用于存储POST请求要上传给服务器的数据。
关于服务端响应的一些要求:
1> 响应行(状态行)
Http协议版本:
服务器响应的状态码:
200 OK 表示请求成功
301、302 Redirect 表示网页进行了重定向
403 Forbidden 客户端的请求被服务器拒绝
400 Bad Request 客户端的请求是无效的请求:url地址错误/请求方法错误/请求参数错误
500 表示服务器异常
4xx: 客户端的问题
5xx: 服务器的问题
2> 响应头
Server: 表示服务端采用的服务器类型。
Expires: 一般表示Cookie的过期时间。
Date: 此次响应的时间。
Content-Type: 服务端向客户端表明此次响应的内容类型。(application/json, application/html, application/jpeg)
Content-Length: 告诉客户端此次响应返回的数据长度。
Set-Cookie: 服务端给客户端返回的Cookie信息。
3> 响应体
用于存储响应的内容。
来源:https://www.cnblogs.com/xiaoyuanIT/p/9404065.html