HTTP协议精准详细介绍

| 8 | TRACE | 回显服务器收到的请求,主要用于测试或诊断 |

3.2 请求头部

请求头部: HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者 POST),如有必要,客户程序还可以选择发送其他的请求头。大多数请求头并不是必需的,但Content-Length除外,对于POST请求来说 Content-Length必须出现

请求报头通知服务器关于客户端求求的信息,典型的请求头有:

| 方法名 | 描述 |

| — | — |

| Content-Length | 表示请求消息正文的长度 |

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

| User-Agent | 发送请求的浏览器类型、操作系统等信息 |

| Accept | 客户端可识别的内容类型列表,用于指定客户端接收那些类型的信息 |

| Accept-Encoding | 客户端可识别的数据编码 |

| Accept-Language | 表示浏览器所支持的语言类型 |

| Connection | 允许客户端和服务器指定与请求/响应连接有关的选项,例如这是为Keep-Alive则表示保持连接 |

| Transfer-Encoding | 告知接收端为了保证报文的可靠传输,对报文采用了什么编码方式 |

| Cookie | 客户端可以向服务器带数据,只是非常重要的信息之一 |

| Referer | 发出请求的页面的URL |

3.3 空行

他的作用是告诉服务器 请求头部信息到此为止

3.4 请求正文
  1. 若方法是 GET,则该项为空。(数据都在url 地址栏里面)

  2. 若方法是 post 字段,则通常放置的是要 提交的数据

案例:

在这里插入图片描述

四、HTTP响应结构

HTTP响应结构:

在这里插入图片描述

HTTP的响应报文是由( 状态行、响应头部、响应正文) 三部分组成

4.1 响应行

响应行: 描述了响应的状态,一般由协议版本、状态码及其描述组成 比如 HTTP/1.1 200 OK\r\n,其中协议版本HTTP/1.1或者HTTP/1.0,200就是它的状态码,OK则为它的描述。

五种可能的取值:

| 状态码 | 描述 |

| — | — |

| 1XX (100-199) | 指示信息——表示请求已接收,继续处理 |

| 2XX (200-299) | 成功——表示请求已被成功接收,理解,接收 |

| 3XX (300-399) | 重定向——要完成请求必须进行更进一步的操作 |

| 4XX (400-499) | 客户端错误——请求有语法错误或请求无法实现 |

| 5XX (500-599) | 服务端错误——服务器未能实现合法的请求 |

常见状态码:

| 状态码 | 描述 |

| — | — |

| 200 OK | 正常返回信息 |

| 400 Bad Request | 客户端请求有语法错误,不能被服务器所理解 |

| 401 Unauthorized | 请求未经授权,这个状态代码必须和WWW–Authenticate报头域一起使用 |

| 403 Forbidden | 服务器收到请求,但是拒绝提供服务 |

| 404 Not Found | 请求资源不存在,eg,输入了错误的URL |

| 500 Internal Server Error | 服务器发生不可预期的错误 |

| 503 Server Unavailable | 服务器当前不能处理客户端的请求,一段时间后可能恢复正常 |

4.2 响应头部

响应头部: 用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据。

| 方法 | 描述 |

| — | — |

| Server | 服务器通过这个头告诉浏览器服务器的类型 |

| Date | 表示消息发送的时间 |

| Allow | 服务器支持哪些请求方法(如GET、POST等) |

| Content-Encoding | 文档的编码(Encode)方法 |

| Content-Length | 表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据 |

| Content- Type | 表示后面的文档属于什么MIME类型 |

| Expires | 告诉浏览器把回送的资源缓存多长时间,-1或0则是不缓存 |

| Server | 服务器通过这个头告诉浏览器服务器的类型 |

| WWW-Authenticate | 客户应该在Authorization头中提供什么类型的授权信息 |

| Transfer-Encoding | 告诉浏览器数据的传送格式 |

| Access-Control-Allow-Origin | 它的值要么是请求时Origin字段的值,要么是一个*,表示接受任意域名的请求 |

| Access-Control-Allow-Credentials | 该字段可选。它的值是一个布尔值,表示是否允许发送Cookie |

4.3 响应头部

响应头部就是响应的消息体,它包含了响应的内容。它可以包含HTML代码,图片,等等。主体是由传输在HTTP消息中紧跟在头部后面的数据字节组成的。

案例:

在这里插入图片描述

五、浏览器输入URL,回车之后请求流程

关于TCP的三次握手和四次挥手可以看我上一篇文章:https://blog.csdn.net/qq_14996421/article/details/105365006

1. DNS解析:

当我们浏览器会首先搜索浏览器自身的DNS缓存,也就是我们的hosts文件中去查找,如果浏览器自身缓存找不到则会查看系统的DNS缓存,如果找到且没有过期则停止搜索解析到此结束,而如果本机没有找到DNS缓存,则浏览器会发起一个DNS的系统调用,就会向本地配置的首选DNS服务器发起域名解析请求,最终会找到我们域名对应的IP地址。

2. TCP解析:

拿到域名对应的IP地址之后,User-Agent(一般是指浏览器)会以一个随机端口(1024< 端口 < 65535)向服务器的WEB程序(常用的有httpd,nginx等)80端口发起TCP的连接请求。这个连接请求到达服务器端后,进入到网卡,然后是进入到内核的TCP/IP协议栈,最终到达WEB程序,最终建立了TCP/IP的连接

3. 发送HTTP请求: 建立了TCP连接之后,发起一个http请求

4. 服务器处理请求并返回HTTP报文: 服务器接受并处理完请求,返回 HTTP 响应,一个响应报文格式基本等同于请求报文,由响应行、响应头、空行、实体组成

5. 浏览器解析渲染页面

6. 连接结束: TCP四次挥手,端口连接

六、Cookie和Session的区别

6.1 Cookie简介:
  • 是由服务器发给客户端的特殊信息,以文本的形式存放在客户端

  • 客户端再次请求的时候,会把Cookie回发

  • 服务器接收到后,会解析Cookie生存与客户端相对于的内容

Cookie的设置以及发送过程:

在这里插入图片描述

6.2 Session简介:
  • 服务器端的机制,在服务器上保存的信息

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Java)

如何快速更新自己的技术积累?

  • 在现有的项目里,深挖技术,比如用到netty可以把相关底层代码和要点都看起来。
  • 如果不知道目前的努力方向,就看自己的领导或公司里技术强的人在学什么。
  • 知道努力方向后不知道该怎么学,就到处去找相关资料然后练习。
  • 学习以后不知道有没有学成,则可以通过面试去检验。

我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!

以上面试专题的答小编案整理成面试文档了,文档里有答案详解,以及其他一些大厂面试题目

八年CRUD,疫情备战三个月,三面头条、四面阿里拿offer面经分享

八年CRUD,疫情备战三个月,三面头条、四面阿里拿offer面经分享

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
的将是更美好的未来,继续加油!**

以上面试专题的答小编案整理成面试文档了,文档里有答案详解,以及其他一些大厂面试题目

[外链图片转存中…(img-Jq6qlKNV-1713856422422)]

[外链图片转存中…(img-eSkTiiVt-1713856422422)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 19
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值