HTTP协议 | 青训营笔记

99 阅读4分钟

这是我参与「第四届青训营 」笔记创作活动的的第8天。

今天接着介绍关于HTTP协议的内容。

感兴趣的可以看看我之前的文章:红包算法之如何助你抢到大红包 | 青训营笔记 - 掘金 (juejin.cn)

HTTP协议的组成

Http协议由Http请求和Http响应组成,当在浏览器中输入网址访问某个网站时, 你的浏览器会将你的请求封装成一个Http请求发送给服务器站点,服务器接收到请  求后会组织响应数据封装成一个Http响应返回给浏览器。

HTTP请求报文组成

HTTP请求报文由3部分组成(请求行+请求头+请求体):

请求行

例如:POST /chapter17/user.html HTTP/1.1

格式:请求方式 资源路径 协议/版本

请求行必须在http请求格式的第一行。

get请求:

  1. 将请求参数追加在url后面,不安全

  2. url长度限制get请求方式数据的大小

  3. 没有请求体,一般的HTTP请求大多都是GET。

post请求:

  1. 请求参数在请求体处,较安全。

  2. 请求数据大小没有显示

  3. 只有表单设置为method=“post”才是post请求,其他都是get请求

其他的常见方法:

1.png

请求头:

例如:Host: 39.108.107.149:8080

请求头从第二行开始,到第一个空格结束。

请求头通常以键值对{key:value}方式传递数据。 key为规范的固定值 value为key对应的取值,通常是一个值,可能是一组。

常见请求头:

Referer: 表示这个请求是从哪个url跳过来的,通过百度来搜索淘宝网,那么在进入淘宝网的请求报文中,Referer的值就是:www.baidu.com。如果是直接访问就不会有这个头。

Accept: 告诉服务端,该请求所能支持的响应数据类型,专业术语称为MIME 类型(文件类型的一种描述方式)

...

更多请求头属性可以参考这篇文章:HTTP响应头和请求头信息对照表

请求体

当请求方式是post的时,请求体会有请求的参数,格式如下:

username=zhangsan&password=123

HTTP响应报文组成

HTTP的响应报文也由三部分组成(响应行+响应头+响应体)

响应行:

①报文协议及版本;

例如:

HTTP/1.1 200 OK

②状态码及状态描述;

状态码

1xx:指示信息,表示请求已接收,继续处理

2xx:成功,表示请求已被成功接受,处理。

  • 200 OK:客户端请求成功
  • 204 No Content:无内容。服务器成功处理,但未返回内容。一般用在只是客户端向服务器发送信息,而服务器不用向客户端返回什么信息的情况。不会刷新页面。
  • 206 Partial Content:服务器已经完成了部分GET请求(客户端进行了范围请求)。响应报文中包含Content-Range指定范围的实体内容

3xx:重定向

  • 301 Moved Permanently:永久重定向,表示请求的资源已经永久的搬到了其他位置。
  • 302 Found:临时重定向,表示请求的资源临时搬到了其他位置
  • 303 See Other:临时重定向,应使用GET定向获取请求资源。303功能与302一样,区别只是303明确客户端应该使用GET访问
  • 307 Temporary Redirect:临时重定向,和302有着相同含义。POST不会变成GET
  • 304 Not Modified:表示客户端发送附带条件的请求(GET方法请求报文中的IF…)时,条件不满足。返回304时,不包含任何响应主体。虽然304被划分在3XX,但和重定向一毛钱关系都没有

4xx:客户端错误

  • 400 Bad Request:客户端请求有语法错误,服务器无法理解。
  • 401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
  • 403 Forbidden:服务器收到请求,但是拒绝提供服务
  • 404 Not Found:请求资源不存在。比如,输入了错误的url
  • 415 Unsupported media type:不支持的媒体类型

5xx:服务器端错误,服务器未能实现合法的请求。

  • 500 Internal Server Error:服务器发生不可预期的错误。
  • 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,

响应头:

③响应报文头,也是由多个属性组成;

响应头也是用键值对k:v

服务器通过响应头来控制浏览器的行为,不同的头浏览器操作不同

更多请求头属性可以参考这篇文章:HTTP响应头和请求头信息对照表

响应体:

响应体,响应体是服务器回写给客户端的页面正文,浏览器将正文加载到内存,然后解析渲染显示页面内容。


如有不对之处,欢迎指出