Http基础协议和解析
Http基础协议和解析
B/S架构和C/S架构
-
什么是CS架构
客户机-服务器,即Client-Server(C/S)结构
但是缺少通用性,系统维护没升级需要重新设计和开发,增加了维护和管理的难度
-
什么是BS架构
B/S架构即浏览器和服务器架构模式,是Web兴起后的一种网络架构模式
Web浏览器是客户端最主要的应用软件
统一了解客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发,维护和使用
-
什么是URL(统一资源定位符,获取服务器资源的一种)
-
标准格式:协议://服务器IP:端口/路径1/路径N?key1=value & key2=value2
- 协议:不同协议有不同的解析方式
- 服务器IP:网络中存在无数主机,要访问哪一台,通过公网IP区分
- 端口:一台主机上运行着很多的进程,为了区分不同进程,一个端口对应一个进程,http默认的端口是80
- 路径:资源N多种,为了进一步区分资源所在的路径(后端接口,一般称为"接口路径",“接口”)
HyperTest Transfer Protocol超文本传输协议
-
协议
- 协议是一种约定,规定好一种信息格式,如果发送方按照这种请求格式发送信息,那么接收端就哟啊按照这样的格式解析数据,这就是协议
- json协议
{"name":"jane","age":25,"sex":"famal" }
-
xml协议
<xml><user><name>jane</name><age>25</age><sex>famal</sex></user> </xml>
-
http超文本传输协议
-
什么是http协议
- 即超文本传输协议(HyperTest Trasfer Protocol),是Web联网的基础,也是手机联网常用的协议之一,http协议是建立在tcp协议之上的一种应用
- http连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,从连接到关闭连接的过程称为”一次连接“
- http请求-http响应
- 响应码
- 1XX:信息
- 2XX:成功 200 OK ,请求正常
- 3XX:重定向
- 4XX:客户端错误 404 NotFound 服务器无法找到被请求的页面
- 5XX:服务器错误 503 Service Unavilable ,服务器不可用
-
发展历史
- http0.9->http1.0->http1.1->http2.0
- 不多优化协议,增加更多功能
-
和https的关系
- HyperText Transfer Protocol over SecureSoket Layer
- 主要由两部分组成:http+SSL/TLS
- 比http协议安全,可防止数据在传输过程中不被窃取,改变,确保数据的完整性,增加破解成本
- 缺点:相同的网络环境下,https协议会使页面加载时间延长近50%,增加额外的计算资源消耗,增加10%到20%的耗电等,不过利大于弊,Https是趋势,相关资源损耗也在持续下降
- 如果软件压测,直接压测内网IP,通过压测公网域名,不管是http还是https,都会带来额外的损耗导致结果不准确
-
http请求消息结构
-
请求行
- 请求方法
- URL地址
- 协议名
-
请求头
- 报文头包含若干个属性 格式为“属性名:属性值”,
- 服务端据此获取客户端的基本信息
-
请求体
- 请求的参数可以使json对象,也可以是前端表单生化池呢个的key = value & key= value的字符串
-
-
http响应消息结构
- 状态行
- 报文协议及版本,状态码
- 响应头
- 报文头包含若干个属性 格式为“属性名:属性值”
- 响应正文
- 响应报文体,我们需要的内容,多形式比如html、json、图片、视频文件等
- 状态行
http的九种请求方法的介绍
http常见的请求方法和使用
- http1.0定义了3种:
- Get:向服务器获取资源,比如常见的查询请求
- Post::向服务器提交数据而发送请求
- Head:和Get类似,返回的响应种没有具体内容,用于获取报头
- http1.1定义了6种
- put:一般用于更新请求,比如更新个人信息、商品图片全量更新
- patch:put方法的补充,更新制定资源的部分数据
- delete:用于删除指定的资源
- options:获取服务器支持的http请求方法,服务器性能、跨域检查等
- connect:方法的作用就是把服务器作为跳板,让服务器代替用户去访问其他网页买之后把数据原原本本地返回给用户,网页开发基本不会使用这个方法,如果是http代理就会使用这个,让服务器代理用户去访问其他网页,类似中介
请求方法,服务器性能、跨域检查等 - connect:方法的作用就是把服务器作为跳板,让服务器代替用户去访问其他网页买之后把数据原原本本地返回给用户,网页开发基本不会使用这个方法,如果是http代理就会使用这个,让服务器代理用户去访问其他网页,类似中介
- trace:回显服务器收到的请求,主要用于测试或诊断
http常见响应状态码HttpCode
http常见的响应状态码详细讲解
- 浏览器向服务端请求时,服务端响应的消息头里面有状态码,表示请求结果的状态
- 分类
- 1XX:需要请求者继续执行操作,比较少用
- 2XX:请求成功,常用的200
- 3XX:重定向:浏览器拿到服务器返回的这个状态码后会跳转的一个新的URL地址,这个地址可以从响应的Location首部中获取
- 好处:网站改版、域名迁移等,多个域名指向各个主流网站
- 必须记住:
- 301:永久跳转,比如域名过期,换个域名
- 302:永久跳转
- 4XX:客户端出错,请求包含语法错误或者无法完成请求
- 必须记住:
- 400:请求出错,比如语法协议
- 403:没有访问权限
- 404:找不到这个路径对应的接口或者文件
- 405:不允许此方法进行提交,Method allowed,比如接口一定要Post方式,而你使用了Get
- 必须记住:
- 5XX:服务端出错,服服务器在处理请求的过程中发生了错误
- 必须记住:
- 500:服务器内部报错,完成不了这次请求
- 503:服务器宕机
- 必须记住:
http常见的请求头知识点
http常见的请求头
-
http请求分为3部分:请求头,请求行,请求体
- 请求头:报文包含若干个属性,格式为“属性名:属性值”
- 服务端据此获取客户端的基本信息
-
常见的请求头
-
Accept:浏览器支持的MIME媒体类型,比如Text/html,application/json,image/webp/等
-
Accept-Encoding:浏览器发给服务器,声明浏览器知识的编码类型,gzip,delfate
-
Accept-Language:客户端接受的语言格式,比如zh-CN
-
Connection:keep-alive,开启http持久连接
-
Host:服务器域名
-
Origin:告诉服务器请求从哪里发起,包括协议和域名;CORS跨域请求中可以看到response有对应的header,Access-Control-Allow-Origin
-
Referer:告诉服务器请求的原始资源的URL其用于所有类型的请求并且包括:协议+域名+查询参数;很多抢购服务会用到这个做限制,必须通过某个链接进入才有效
-
User-Agent:服务器通过这个请求头判断用户的 软件类型、操作系统、软件开发商以及版本号、浏览器内核信息等;
风控系统、反作弊系统,反爬虫系统等基本会采集这类信息做参考
-
Cookies:表示服务端给客户传的http请求状态,也是多个key=value形式的组合,比如登录后的令牌等
-
Contenet-Type:http请求提交的内容类型,一般只有Post提交时才需要设置,比如文件上传,表单提交等
-
http相应头知识点
http响应头
- 响应头
- 报文包含若干个属性,格式为“属性名:属性值”
- 常见的响应头
- Allow:服务器支持哪些请求
- Content-Length:响应体的字节长度
- Content-Type:响应体的MIME类型
- Content-Encoding:设置数据使用的编码类型
- Date:设置消息发送的时间和日期
- Expires:设置响应体的过期时间,一个GMT时间,表示该缓存的有效时间
- cache-control:Expires的作用一致,都是指明当前资源的有效时间,控制浏览器是否直接从浏览器缓存存取数据还是重新发送请求到服务器获取数据,优先级高于Expires,控制粒度等精细,如max-age=240,即为4分钟
- Location:表示客户应当到哪里去获取资源,一般同时设置转台代码为3XX
- Server:服务器名名称
- Trasfer-Encoding:chunked 表示输出的内容长度不能确定,静态网页一般没有,基本出现在动态网页里面
- Access-Control-Allow-Origin:定哪些站点可以参与跨站资源共享
http常见请求/响应头Content-Type内容类型
http里面的Content-type媒体类型讲解
- Content-type用来指定不同格式的请求响应信息,俗称MIME媒体类型
- 常见的取值:
- text/html:html格式
- text/plain:纯文本格式
- texty/xml:XML格式
- image/gif:GIF图片格式
- image/jpeg:JPG图片格式
- image/png:png图片格式
- application/json:JSON数据格式
- application/pdf:PDF格式
- application/octet-stream:二进制数据流,一般是文件下载
- application/x-www-form-urlencodeed:form表单默认的提交数据的格式,会编码成key=value格式
- multipart/form-data:表单中需要上传文件格式类型
- http知识加深文档:https://developer.mozilla.org/zh-CN/docs/Web/HTTP