HTTP

HTTP

HTTP协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。

ctrl + shift +delete 可清除浏览器缓存


请求与响应

HTTP的交互方式:

  • 请求:永远都是客户向服务端发送
  • 响应:永远都是服务端向客户端返回

数据的格式:

  • 请求时发送的数据称之为请求报文

  • 响应时返回的数据称之为响应报文


http长连接和短链接的问题

  • http是应用层协议

  • tcp是传输层协议:面向连接的特点

  • ip是网络层协议

http在使用时,会经常的发送请求,而如果用tcp进行连接,就会进行多次的连接(三次握手,四次挥手)

为了解决这种问题,http1.1版本选择了tcp长连接(等待所有资源请求加载完再关闭连接)


请求和响应报文

报文有规定的格式

  • 行:请求行,响应行
  • 头:请求头,响应头
  • 报文主体:请求报文主体,响应报文主体
请求报文
  • 请求行

    • GET/POST
    • 资源路径?参数
    • HTTP/1.1
  • 请求头

    • 键值对
  • 请求体

    • 当请求方式为post方式时,请求体中就会存有参数的键值对
响应报文
  • 响应行

    • HTTP/1.1
    • 响应状态码
    • 响应状态描述(Tomcat10会被缺省)
  • 响应头

    • 键值对
      • Content-Length:这个属性的值是响应体的长度
      • Content-Type:这个属性的值是响应体的具体类型
  • 响应体

  • 有了响应体的长度之后,我们就能对本地的响应体进行校验,是否完成数据的传输

因为服务器返回的是0,1的编码,需要由服务器告诉客户端用什么类型来解析这个响应体


响应状态码

常见的响应状态码
  • 200:请求成功,浏览器会把响应体内容(通常是html)显示到浏览器中
  • 302:重定向,当响应码为302时,表示服务器要求浏览器重新再发一个请求,服务器会发送一个响应头Location指定新请求的URL地址
  • 304:使用了本地缓存
  • 404:请求的资源没有找到,说明客户端错误的请求了不存在的资源
  • 405:请求的方式不允许,例如网站本身的请求方法是get,但是用post请求
  • 500:请求资源找到了,但服务器内部出现了错误,比如后台的代码有异常

更多的响应状态码

HTTP 状态码 | 菜鸟教程 (runoob.com)