兔嘟嘟
老师的关于HTTPS这几篇太精彩了,对比起来,网上的文章要不太学术/数学化,要不太简单
作者回复:many thanks
2021-07-28
3
Leolee
作业:
1.header后紧跟的第一个空行后的内容都视为body,包括空行;
2.通常都打一个空格是为了节省资源,减少不必要的浪费。
HTTP报文小结:
1.HTTP报文结构简单来说就是:header +body,就像“大头儿子”,由“起始行+头部+空行+实体”组成,可以无body,必须有header、neck(空行);
2. 头部(头部又叫请求头、响应头)构成
·请求头由“请求行+头部字段”构成,响应头由“状态行+头部字段”构成;
·请求行有三部分:请求方法+请求目标+版本号
·响应行有三部分:版本号+状态码+原因字符串
完整的请求头和响应头:
3.头部字段:
·头部字段以key-value形式写成,它非常灵活,除了使用标准的Host,connection等已有头,也可以任意添加自定义头,这就给HTTP协议带来了无限的扩展可能;
·头部字段注意事项:
1.字段名不区分大小写,但推荐首字母大写;
2.字段名不允许出现空格、下划线,可以使用连字符“-”;
3.字段名后面接“:”,:前不能有空格,:后可以有多个空格;
4.字段的顺序是么样意义的,可以任意排列不影响语义;
5.字段原则上不能重复,除非这个字段本身的语义允许,例如Set-cookie。
HTTP四类大常用头字段:
1.通用字段:在请求头和响应头里都可以出现;
2.请求字段:仅能出现在请求头里,进一步说明请求信息或者额外的附加条件;
3.响应字段:仅能出现在响应头里,补充说明响应报文的信息;
4.实体字段:它实际上属于通用字段,但专门描述body的额外信息。
划重点!!!对HTTP报文的解析和处理实际上主要就是怼头字段的处理,理解了头字段也就理解了HTTP报文。
4.常用头的作用,理解这些就能看懂大多数的报文了:
·HTTP/1.1里唯一要求必须要提供的头字段是Host,它必须出现在请求头里,标记虚拟主机名,否则当存在多个虚拟主机名时,就会找不到合适的虚拟主机,无法处理。
·User-Agent是请求字段,只出现在请求头里。它使用一个字符串来描述发起HTTP请求的客户端,服务器可以一句它来返回最合适此浏览器显示的页面。但由于历史原因,它非常混乱,每个浏览器都自称是"Mozilla"、"Chrome"、"Safari",企图使用这个字段来互相“伪装”,导致它变得越来越长,最终变得毫无意义。
不过有的比较“诚实”的爬虫会在这个字段用“spider”表明自己是爬虫,所以可以利用这个字段实现简单的反爬虫策略。
·Date字段是一个通用字段,但通常出现在响应头里,表示HTTP报文创建的时间,客户端可以使用这个时间再搭配其他字段决定缓存策略。
·Server字段是响应字段,只能出现在响应头里。它告诉客户端当前正在提供Web服务的软件名称和版本号。
Server字段也不是必须要出现的,因为这会把服务器的一部分信息暴露给外界,如果这个版本恰好存在bug,那么黑客就有可能利用bug攻陷服务器。所以,有的响应头里要么没有这个字段,要么就给出一个完全无关的描述信息。
·Content-Length表示报文里body的长度,也就是请求头或响应头空行后面数据的长度。服务器看到这个字段,就知道了后续有多少数据,可以直接接收。如果没有这个字段,那么body就是不定长的,需要使用chunked方式分段传输。
作者回复:总结的非常完整,awsome。
2021-04-09
Jerryz
首先,文字+音频的专栏确实比视频的专栏信息密度更高。也更适合学习。
再则,作为一个前端工程师学习 HTTP 原理确实和后端谈接口的时候更有信心了。
老师的专栏质量很高,也确实做了深入浅出。
点个赞。
作者回复:Many thanks。
2021-04-09
1
CC
惊喜,刚刚好在学习第二遍,看到 HTTP/3 的新文章更新。谢谢老师。
作者回复:学而时习之,不亦乐乎。
2021-03-02
8
Jerryz
1. DNS 可以定位到一台主机,URI 则可以定位到主机上的资源。
2. 正向代理:我通过查找小强的电话薄,转话到小明。反向代理:我通过查找小明的电话薄,但是和我通话的实际是小强。
作者回复:very nice!
2021-01-12
3
牛
请问一下,使用telnet发送的如下包
GET /16-2 HTTP/1.1
Host: www.chrono.com
Range: bytes=0-9, 20-29
在用wireshark捕获的数据包中,第一个数据包发送了HTTP请求头,但是为什么在包列表中被归为了TCP请求?
作者回复:看不到你的wireshark抓包,不知道具体是什么样的。但我觉得是不是因为http运行在tcp上,所以wireshark就先显示成了tcp,试试可否展开包数据,里面应该就是http协议。
2021-01-11
1
李皮皮皮皮皮
大头儿子的比喻太赞了,这下一辈子都忘不了了
作者回复:笑,希望能够帮到你。
2020-10-19
1
王晓聪
断断续续花了一个月时间学完了整个课程,基本每一篇文章的后留言都看了一遍。概念,基础,进阶,安全,飞翔,探索,老师完整的将HTTP密切相关的知识讲了一遍,感谢~
作者回复:大家共同进步。
2020-07-01
哈哈静
老师讲的确实很清晰啊,言辞也很踏实了,喜欢这种风格^0^
作者回复:后面的内容很多,慢慢学,有疑问可以参考其他同学的留言,或者直接问。
2020-06-25
Aaron
一直膜拜阮一峰老师的文笔,他是我读过的技术文章中写的最好的作者。但令我惊讶的是,当我近乎一口气读完 Chrono 老师的本专栏,竟在心底产生有一种『世外桃源』的感觉,不自觉将两位老师进行比较,难分伯仲。感谢 Chrono 老师的付出,在这个追名逐利的大环境下,能做出如此高质量的专栏,可以说是『功德无量』了。
作者回复:实在是过誉了,感谢褒奖!
2020-06-03
4
编辑推荐
讲师的其他课程
包含这门课的学习路径
Go工程师
16门课程 89.9w人学习
测试工程师
18门课程 93.7w人学习
前端工程师
24门课程 109.3w人学习
iOS工程师
7门课程 31.2w人学习
后端工程师
27门课程 184.1w人学习