一封供程序员参考的http学习笔记
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一封供程序员参考的http学习笔记相关的知识,希望对你有一定的参考价值。
文章目录
- CDN有什么好处
- 什么是代理
- 浏览器HTTP请求过程
- 在HTTP中安全和幂等是什么意思
- HTTP方法清单
- 状态码的含义
- 3xx
- 5xx
- HTTP的优缺点
- HTTP头字段
- 内容协商的质量值
- HTTP连接管理
- HTTP的重定向和跳转
- HTTPS和HTTP的区别
CDN有什么好处
CDN可以缓存源站的数据,让浏览器的请求不用到达源站服务器,在半路上就能获得响应,这样能够大幅度缩短响应时间。
什么是代理
代理(Proxy)是HTTP协议中请求方和应答方中间的一个环节,作为“中转站”,既可以转发客户端的请求,也可以转发服务器的应答。
常见的代理有:
- 匿名代理:完全“隐匿”了被代理的机器,外界看到的只是代理服务器
- 透明代理:在传输过程中是透明开放的,外界既知道代理,也知道客户端
- 正向代理:代表客户端向服务器发送请求
- 反向代理:代表服务器响应客户端的请求
代理可以做很多事情,比如:
- 负载均衡:把访问请求均匀分散到多台机器,实现访问集群化
- 内容缓存:暂存上下行的数据,减轻后端的压力
- 安全防护:隐匿IP,保护被代理的机器
- 数据处理:提供压缩、加密等额外的功能
浏览器HTTP请求过程
- 浏览器从地址栏的输入中获得服务器的IP地址和端口号
- 浏览器用TCP的三次握手与服务器建立连接
- 浏览器向服务器发送拼好的报文
- 服务器收到报文后处理请求,同好拼好报文在发给浏览器
- 浏览器解析报文,渲染输出页面
在HTTP中安全和幂等是什么意思
- 安全:指请求方法不会“破坏”服务器上的资源
- 幂等:多次执行相同的操作,结果也都是相同的
HTTP方法清单
- GET:获取资源,可以理解为读取或者下载数据
- HEAD:获取资源的元信息
- POST:向资源提交数据,相当于写入或上传数据
- PUT:类似POST
- DELETE:删除资源
- OPTIONS:列出可对资源实行的方法
- TRACE:追踪请求(即响应的传输路径)
- CONNECT:建立特殊的连接隧道
状态码的含义
- 1xx:提示信息,表示目前是协议处理的中间状态,还需要后续的操作
- 2xx:成功,报文已经收到并且被正确处理
- 3xx:重定向,资源位置发生变动,需要客户端重新发送请求
- 4xx:客户端错误,请求报文有误,服务器无法处理
- 5xx:服务器错误,服务器在处理请求时内部发生了错误
3xx
- 301:表示永久重定向(http升级称为https,需要永久定向过去)
- 302:临时重定向(系统维护,暂时不可用)
- 304:使用缓存(缓存重定向)
5xx
- 502:访问后端服务器的时候发生了错误
HTTP的优缺点
优点
- 简单、灵活、易于扩展
- 应用广泛
- 无状态,可以轻松实现集群化
缺点
- 明文传输,安全性不高
- 性能一般
HTTP头字段
- text:文本格式的可读数据
- text/html:超文本文档
- text/plain:纯文本
- text/css:样式表
- image:图像文件
- image/gif
- image/jpeg
- image/png
- audio/video:音频和视频数据
- audio/mpeg
- video/mp4
- application:数据格式
- application/json
- application/javascript
- application/pdf
- accept:接受的类型
- content-type:实体数据的真实类型
- Transfer- Encoding:chunked(分块传输)
内容协商的质量值
权重的最大值是1,最小值是0.01,默认值是1,如果值是0表示拒绝。
具体的形式是在数据类型或语言代码后面加一个;,然后是“q=value”
Accept:text/html,application/xml;q=0.9,*/*;q=0.8
它表示浏览器最希望使用的是 HTML 文件,权重是 1,其次是 XML 文件,权重是 0.9,最后是任意数据类型,权重是 0.8。服务器收到请求头后,就会计算权重,再根据自己的实际情况优先输出 HTML 或者 XML
HTTP连接管理
HTTP默认采用长连接,响应数据会自动加上
Conntection:keep-alive
客户端可以使用Connection:close
字段告诉服务器:这次通信后就关闭连接
HTTP的重定向和跳转
浏览器收到301/302报文,会检查响应头里有没有Location
。如果有,就会从字段里提取出URI,发送新的HTTP请求,相当于帮助我们点击了这个连接。
HTTPS和HTTP的区别
- HTTPS默认端口:443 ,HTTP默认端口:80
- HTTPS是加密传输的,HTTP是明文传输的
以上是关于一封供程序员参考的http学习笔记的主要内容,如果未能解决你的问题,请参考以下文章