• HTTP详解


    什么是HTTP

            超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。

    • 文本:html,字符串...

    • 超文本:图片,音乐,视频,定位,地图....

    • 80

    HTTPS:安全的

    • 443

    两个时代

    • http1.0

      • HTTP/1.0 : 客户端可以与web服务器连接后,只能获得一个web资源,断开连接

    • http2.0

      • HTTP/1.1:客户端可以与web服务器连接后,可以获得多个web资源。

    Http请求

    • 客户端---发送请求(Request)--服务器

    百度:

    1. Request URL: https://www.baidu.com/ 请求地址
    2. Request Method: GET get方法/post方法
    3. Status Code: 200 OK 状态码:200
    4. Remote Address: 14.215.177.38:443
    1. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    2. Accept-Encoding: gzip, deflate, br
    3. Accept-Language: zh-CN,zh;q=0.9 语言
    4. Cache-Control: no-cache
    5. Connection: keep-alive

     (1)请求行 

    • 请求行中的请求方式:GET

    • 请求方式:GET,POST,HEAD,DELETE,PUT,TRACT...

      • get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址拦显示数据内容,不安全,但是高效

      • post:请求能都携带的参数没有限制,大小没有限制,不会再在浏览器的URL地址拦显示数据内容,安全,但是不高效

    (2)消息头

    • Accept: 告诉浏览器,它所支持的类型
    • Accept-Encoding: 支持哪种编码格式  GBK  UTF-8 GB2312  ISO8859-1
    • Accept-Language: 告诉浏览器,它的语言环境
    • Cache-Control: 缓存控制
    • Connection: 告诉浏览器,请求完成是断开还是保持连接
    • Host:主机

    Http响应

    • 服务器---响应---客户端

    百度:

    Cache-Control: private                 缓存控制
    Connection: keep-alive                 连接保持
    Content-Encoding: gzip                 编码
    Content-Type: text/html;charset=utf-8  类型

     

    1.响应体

    • Accept: 告诉浏览器,它所支持的类型
    • Accept-Encoding: 支持哪种编码格式  GBK  UTF-8 GB2312  ISO8859-1
    • Accept-Language: 告诉浏览器,它的语言环境
    • Cache-Control: 缓存控制
    • Connection:告诉浏览器,请求完成是断开还是保持连接
    • Host:主机
    • Refresh:告诉客户端,多久刷新一次
    • Location:让网页重新定位

    2.响应状态码(重点)

    • 200:请求响应成功
    • 3xx:请求重定向
      • 重定向:你重新到我给你的新位置去

    • 4xx:找不到资源 404
      • 资源不存在

    • 5xx:服务器代码错误 500 502(网关错误)

    扩展:

    常见面试题:

            当你的浏览器中地址拦输入地址并回车的一瞬间到页面能够展示回来,经历了什么?

     

    1. 作为客户端,浏览器接收到地址之后,首先会到windows系统文件hosts中查找是否有需要劫持的ip地址,若没有则需要询问DNS域名解析服务器该域名对应的ip地址。(DNS缓存,浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,根域名服务器缓存,顶级域名服务器缓存,主域名服务器缓存)

    2. 获取到正确的ip地址后,客户端会与服务器建立TCP连接(三次握手),(网络层、数据链路层、物理层)

    3. 客户端向服务端发送请求,包含请求行、请求头、请求正文。多种请求方式(GET,POST、PUT等)

    4. 服务端处理请求,并返回响应,包含状态码、响应头、响应体

    5. 浏览器收到响应,解析渲染页面,展示出来

    6. 断开连接(http1.0短连接,http1.1长连接)

  • 相关阅读:
    【GD32】GD32F303串口设置DMA发生中断无法进入中断函数
    Windows下的性能调优工具
    09 多线程与高并发 - CompletableFuture 源码解析
    Mac下使用nvm,执行微信小程序自定义处理命令失败
    在安装pytorch过程中遇到mxnet安装问题
    Oracle TEMPORARY TABLE 临时表的使用及删除报ORA-14452错误的解决办法
    Java程序设计2023-第二次上机练习
    【css拾遗】粘性布局实现有滚动条的情况下,按钮固定在页面底部展示
    RabbitMq确认机制
    使用 Vue.js 和 Element Plus 实现自动完成搜索功能
  • 原文地址:https://blog.csdn.net/qq_46423017/article/details/126334568