B/S架构与C/S架构
1.B/S架构和C/S架构你知道多少什么是cs架构客户机-服务器,即Client-Server(C/S)结构但是缺少通用性,系统维护、升级需要重新设计和开发,增加了维护和管理的难度
2.什么是B/S架构?B/S架构即浏览器和服务器架构模式,是WEB兴起后的一种网络架构模式,web浏览器是客户端最主要的应用软件统一的客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用
什么是URL(统一资源定位符,获取服务器资源的一种)
协议: 不同的协议有不同的解析方式 服务器ip: 网络中存在无数的主机,要访问的哪一台,通过公网ip区分 端口: 一台主机运行着很多的进程,为了区分不同进程,一个端口对应一个进程,http默认的端口是80 路径: 资源N多种,为了更进一步区分资源所在的路径(后端接口,一般称为"接口路径",“接口”)
什么是HTTP超文本传输协议
协议是一种约定,规定好一种信息的格式,如果发送方按照这种请求格式发送信息,那么接收端就要按照这样的格式解析数据,这就是协议
JSON协议
{"name":"jack","age":"26"}
XML协议
<user>
<name>jack</name>
<age>26</age>
</user>
HTTP协议
1.即超文本传送协议(Hypertext Transfer Protocol),是web联网的基础,也是手机PC联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用
2.HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,从建立连接到关闭连接的过程称为"一次连接"
3.HTTP请求-HTTP响应
响应码
"1xx":'收到请求,需要请求者继续执行操作,比较少用';
"2xx":'成功 200 ok,请求正常,常用200';
"3xx":'重定向,浏览器在拿到服务器返回的这个状态码后会自动跳转到新的一个URL地址,这个地址可以从响应的location首部中获取';
301 : 永久性跳转,比如域名过期、换个域名
302 : 临时性跳转
"4xx":'客户端错误404 Not Found 请求包含语法错误或者无法完成请求';
400 :请求出错,比如语法协议
403 :没有访问权限
404 :找不到这个路径对应的接口或者文件
405 :不允许此方法进行提交,method not allowed,比如接口一定要用post方式,而你用了get
"5xx":'服务器错误 503 Service Unavailable,服务器挂了或者不可用';
500 :服务器内部报错了,完成不了这次请求
503 :服务器宕机
HTTP与HTTPS关系
1.Hypertext Text Transfer Protocol over SecureSocket Layer
2.主要由两部分组成:HTTP + SSL / TLS
3.比HTTP协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性,增加破解成本
4.缺点:相同网络环境下,HTTPS协议会使页面的加载时间延长近50%,增加额外的计算资源消耗,增加10%到20%的耗电等;不过利大于弊,所以HTTPS是趋势,相关资源损耗也在持续下降
5.如果做软件压测:直接压测内网ip,通过压测公网域名,不管是http还是https,都会带来额外的损耗导致结果不准确
HTTP请求消息结构
"请求行"
请求方法
URL地址
协议名
"请求头"
报文头包含若干个属性格式为"属性名:属性值",
服务端据此获取客户端的基本信息
"请求体"
请求的参数,可以是JSON对象,也可以是前端表单生成的 key=value&key=value的字符串
HTTP响应消息结构
"响应行"
报文协议及版本、状态码
"响应头"
报文头包含若干个属性格式为"属性名:属性值"
"响应正文"
响应报文体,我们需要的内容,多种形式比如HTML、JSON、图片、视频文件等
HTTP常见的请求方法
http1.0定义了三种
"GET" : 向服务器获取资源,比如常见的查询请求
"POST": 向服务器提交数据而发送的请求
"head": 和get类似,返回的响应中没有具体的内容,用于获取报头
http1.1定义了六种
"PUT": 一般是用于更新请求,比如更新个人信息、商品信息全量更新
"PATCH": put方法的补充,更新指定资源的部分数据
"DELETE": 用于删除指定的资源
"OPTIONS": 获取服务器支持的http请求方法,服务器性能、跨域检查等
"CONNECT": 方法的作用就是把服务器作为跳板,让服务器代替用户去访问其他网页,之后把数据原原本本的返回给用户,网页开发基本不用这个方法,如果是http代理就会用这个,让服务器代理用户去访问其他网页,类似中介
"TRACE": 回显服务器收到的请求,主要用于测试或诊断
常见的HTTP请求头
"Accept": 浏览器支持的MIME媒体类型,比如text/html,application/json,image/webp等
"Accept-Encoding": 浏览器发给服务器,声明浏览器支持的编码类型,gzip,deflate
"Accept-Lauguage": 客户端接受的语言格式,比如 zh-CN
"Connection": keep-alive,开启HTTP持久连接
"Host": 服务器的域名
"Origin": 告诉服务器请求从哪里发起的,仅包括协议和域名CORS跨域请求中可以看到response有对应的header,Access-Control-Allow-Origin
"Referer": 告诉服务器请求的原始资源的URL,其用于所有类型的请求,包括:协议+域名+查询参数;很多抢购服务会用这个做限制
"User-Agent": 服务器可以通过这个请求头判断用户的软件的应用类型、操作系统、软件开发商以及版本号、浏览器内核信息等;风控系统、反作弊系统、反爬虫系统等基本会采集这类信息做参考
"Cookie": 表示服务端给客户端传的http请求状态,也是多个key = value 形式组合,比如登入后的令牌等
"Content-Type": HTTP请求提交的内容类型,一般只有post提交时才需要设置,比如文件上传、表单提交等
HTTP响应头的一些小知识
常见的响应头
"Allow": 服务器支持哪些请求方法
"Content-length": 响应体的字节长度
"Content-Type": 响应体的MIME类型
"Content-Encoding": 设置数据使用的编码类型
"Date": 设置消息发送的日期和时间
"Expires": 设置响应体的过期时间,一个GMT时间,表示该缓存的有效时间
"Cache-control": 与Expires作用一致,都是指名当前资源的有效期,控制浏览器是否直接从浏览器缓存取数据还是重新发请求到服务器取数据,优先级高于Expires,控制力度更细,如max-age=240,即为4分钟
"Location": 表示客户应当到哪里获取资源,一般同时设置状态码为3xx
"Server": 服务器名称
"Transfer-Encoding": chunked表示输出的内容长度不能确定,静态网页一般没有,基本出现在动态网页里面
"Access-Control-Allow-Origin": 定哪些站点可以参与跨站资源共享
关于Content-Type媒体类型
"Content-Type": 用来指定不同格式的请求响应信息,俗称MIME媒体类型常见的取值
"text/html": HTML格式 "text/plain": 纯文本格式 "text/xml": XML格式
"image/gif": gif图片格式 "image/jpeg": jpg图片格式 "image/png": png图片格式
"application/json": JSON数据格式 "application/pdf": PDF数据格式 "application/octet-stream": 二进制流数据,一般是文件下载
"application/x-www-form-urlencoded": form表单默认的提交数据的格式,会编码成key=value格式
"multipart/form-data": 表单中需要上传文件的文件格式类型
post请求的常用格式
form-data格式:multipart/form-data;boundary=
x-www-form-urlencoded格式:application/x-www-form-urlencoded
JSON格式: application/json
|