Http协议

1.Http协议

Http是一种通讯协议(protocol),是在Web上进行数据交换的基础,通常我们发起的请求都是由浏览器这样的接受方发起的。目前最新的Http协议版本是Http/5。

Http协议是一种可扩展的协议,它属于应用层的协议。在客户端中,我们基于Http协议向服务端发送请求,服务端接收并处理客户端发过来的请求后,正常情况下会返回一个HTTP的响应消息。

这里的请求和响应就是Http报文:请求报文和响应报文。请求报文就是客户端向服务端发送请求的信号,而响应报文就是服务端响应处理后回传给客户端的信号。

1.1 请求报文

Http请求报文由四部分组成,分别是请求行、请求头、空行和请求体。

在这里插入图片描述

1.1.1 请求行

由请求方法、URL和HTTP协议版本3个字段组成。通过空格分隔,以回车、换行结尾将内容进行一个分割,以表示接下来的内容不是请求行的内容。

例如:GET /index.html HTTP/1.1,GET 是请求方法,index.html是URL,HTTP/1.1表示使用的1.1版本的Http协议。

请求方法的类型

​ GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT

​ GET、POST最为常用(高频面试题)

  • GET方法特点
    1. 传输数据量小,一般不超过1024字符
    2. 将参数和参数值直接暴露在URL中,能直接看到参数和参数值,但是保密性和安全性差
    3. 请求参数和参数值直接拼接在URL后面,通过问号‘?’和and连接符‘&’以及等号‘=’连接,例如:url?sum=20&a=2&b=18
    4. 没有请求体
  • POST方法特点
    1. 传输数据量大,大小不受限制
    2. 将传输的参数数据封装在报文的请求体中,封装完毕后传入接口
    3. 在URL中看不到请求体中的参数,保密性和安全性高
1.1.2 请求头

请求头部由键、值对组成,每行一对,键和值用冒号“:”(英文)分隔。请求头部告知服务器所有有关于客户端请求的信息,典型的请求头有:

User-Agent:产生请求的用户代理信息(浏览器信息): Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36等;


Accept:客户端可识别的内容类型列 :text/html,application/xhtml+xml,application/xml;


Accept-Language:客户端可接受的自然语言 - zh-CN,zh;q=0.8,en;q=0.6,id;q=0.4;


Accept-Encoding:客户端可接受的编码压缩格式 - gzip, deflate, sdch, br


Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机


connection:连接方式,有close和keep-alive两种。


close:告诉WEB服务器或代理服务器,在完成本次请求的响应后,断开连接


keep-alive:告诉WEB服务器或代理服务器。在完成本次请求的响应后,保持连接,以等待后续请求


Cookie:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie - PSTM=1490844191; BIDUPSID=2145FF54639208435F60E1E165379255;

1.1.3 空行

作用:进行内容分割,表示请求头部分到此为止,下一行的内容不再是请求头内容。

1.1.4 请求体

请求体包含请求数据,由请求体携带发送请求

1.2 响应报文

Http响应报文由四个部分组成,分别是:状态行、响应头、空行和响应体。
在这里插入图片描述

1.2.1 状态行

由HTTP协议版本、状态码和状态码描述3个字段组成。通过空格分隔,以回车、换行结尾将内容进行一个分割,以表示接下来的内容不是状态行的内容。

格式为:HTTP-Version Status-Code Reason-Phrase CRLF,HTTP-Version是Http协议版本,Status-Code是状态码,Reason-Phrase CRLF是对状态码的文本描述。

其中状态码由三位数字组成,第一个数字定义的响应类型,一共有五种类型。

状态码类型
  • ​ 1xx:指示信息–表示请求已接收,继续处理

  • ​ 2xx:成功–表示请求已被成功接收、理解、接受

  • ​ 3xx:重定向–要完成请求必须进行更进一步的操作

  • ​ 4xx:客户端错误–请求有语法错误或请求无法实现

  • ​ 5xx:服务器端错误–服务器未能实现合法的请求

常见的状态码及描述
  • 200 OK:客户端请求成功。
  • 400 Bad Request:客户端请求有语法错误,不能被服务器所理解
  • 401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
  • 403 Forbidden:服务器收到请求,但是拒绝提供服务。
  • 404 Not Found:请求资源不存在,举个例子:输入了错误的URL。
  • 500 Internal Server Error:服务器发生不可预期的错误。
  • 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。
1.2.2 响应头

响应头部由键、值对组成,每行一对,键和值用冒号“:”(英文)分隔。响应头域允许服务器传递不能放在状态行的附加信息,这些域主要描述服务器的信息和Request-URI进一步的信息,典型的响应头有:

Server:包含处理请求的原始服务器的软件信息


Date:服务器日期


Content-Type:返回的资源类型 (MIME)


Connection:连接方式


close:连接已经关闭


keep-alive:连接已保持,在等待本次连接的后续请求


Cache-Control:缓存控制


Expires:设置过期时间


Set-Cookie:设置 Cookie 信息

1.2.3 空行

作用:进行内容分割,表示响应头部分到此为止,下一行的内容不再是响应头内容。

1.2.4 响应体

服务器返回给客户端的响应信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值