系列文章目录
文章目录
一:http协议和https协议的区别
1、Https通信需要证书,而证书一般需要向认证机构(一般是ca)购买,因而需要一定费用
2、http的连接很简单,是无状态的,信息是明文传输,端口是80
https协议是由 ssl+http 协议构建的可进行加密传输、身份验证的网络协议,比 http 协议安全,端口是443,但是与HTTP通信相比,Https通信会由于加减密处理消耗更多的CPU和内存资源;
二:http协议
HTTP(hyperText transport Protocol):
超文本传输协议,用于传送www方式的数据,采用了请求/响应模型,客户端向服务器发送了一个请求,服务器以一个状态行作为响应。
HTML就是常见的超文本,它本身只是纯文字文件,但内部用很多标签定义了图片、视频等链接。
1.http的报文段
通常http消息包括客户机向服务器请求消息和服务器向客户机的响应消息,这两种类型的消息由一个起始行,一个或多个头域,一个指示头域结束的空行和可选的消息体组成。
http的头域包括通用头、请求头、响应头、和实体头四个部分,每个头域由一个域名、冒号、和域值三部分组成,域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩张成多行,在每行开始处,使用至少一个空格或制表符。
1)请求报文
1.请求方法
GET:请求获取Request——URL所标识的资源
POST:在Request——URL所标识的资源后附加资源
HEAD:请求获取由Request——URL所标识的资源的响应消息报头
PUT:请求服务器存储一个资源,由Request——URL作为其标识(会覆盖URL处的原资源),
如果URI不存在,则要求服务器根据请求创建资源,如果存在,服务器就接受请求内容,并修改URI资源的原始版本。
DELETE:请求服务器删除由Request——URL所标识的资源
TRACE:请求服务器回送收到的请求信息(用于测试和诊断)
CONNECT:保留
OPTIONS:请求查询服务器性能
2.URL
URI全名为Uniform Resource Indentifier(统一资源标识),用来唯一的标识一个资源,是一个通用的概念,URI由两个主要的子集URL和URN组成。
URL全名为Uniform Resource Locator(统一资源定位),通过描述资源的位置来标识资源。
URN全名为Uniform Resource Name(统一资源命名),通过资源的名字来标识资源,与其所处的位置无关,这样即使资源的位置发生变动,其URN也不会变化。
初步了解URL(接口测试必备)
软件测试之接口自动化测试(三):关于URL
3.协议版本
格式为HTTP/主版本号.次版本号,常用为:HTTP/1.1 HTTP/1.0
4.请求头部
Host:接受请求的服务器地址,可以是IP或者是域名
User-Agent:发送请求的应用名称
Connection:指定与连接相关的属性,例如(Keep_Alive,长连接)
Accept-Charset:通知服务器端可以发送的编码格式
Accept-Encoding:通知服务器端可以发送的数据压缩格式
Accept-Language:通知服务器端可以发送的语言
2)响应报文
1.协议版本
同请求报文
状态码
http协议的状态码 200、301、304、404、502 HTTP状态码解释
1xx:请求已收到继续处理。即表示目前是协议的中间状态,还需要后续请求。
2xx:表示请求成功。
3xx:表示资源重定向,需要重新请求。
4xx:表示客户端请求出错。请求报文错误,客户端错误,服务器无法处理。
5xx:服务器端出错,服务器在处理请求时内部发生了错误。
常用:
-
101:切换请求协议,从HTTP切换到WebSocket
-
200:请求成功,有响应体。
-
301:永久重定向,会缓存。
-
302:临时重定向,不会缓存。
由于不可预见的原因该页面暂不可用。 -
303:临时重定向,
用于PUT 或 POST 请求完成之后进行页面跳转来防止由于页面刷新导致的操作的重复触发。 -
304:协商缓存命中。特殊重定向
-
400:请求错误。
-
403:服务器禁止访问,表示客户端请求的报文有错,只是个笼统的错误。
-
404:资源未找到,表示请求的资源在服务器上不存在或者未找到,所以无法提供给客户端。
-
501:表示客户端请求的功能还不支持。
-
502:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
-
503:服务器繁忙。
-
504:作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。
3.响应头部
Server:服务器应用软件的名称和版本
Content-Type:响应正文的类型
Content-Length:响应正文的长度
Content-Charset:响应正文所使用的编码
Content-Encoding:响应正文使用的数据压缩格式
Content-Language:响应正文使用的语言
3)GET与POST的区别
HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。不过HTTP协议给两种方法限定了规则。
1)作用不同
-
GET方法的含义是请求从服务器获取资源(静态文本、图片视频等)。
-
POST方法则是向URL指定的资源提交数据,数据就放在报文的body里面,用于传输实体主体。
2)产生的数据包个数不同
-
GET产生一个TCP数据包,对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
-
POST产生两个TCP数据包。对于POST,浏览器先发送header,服务器响应100,浏览器再发送data,服务器响应200(返回数据)。
3)GET比POST更不安全。
-
GET参数通过URL传递,参数直接暴露在URL上,对所有人是可见的,浏览器会主动缓存get请求,参数被完整保留在浏览器历史记录里。所以不能用来传递敏感信息。
-
POST的参数放在Request body中,数据不会显示在URL中;浏览器不会主动缓存post请求,参数不会被保存在浏览器历史记录或者web服务器日志中,因此相对安全。
4)后退按钮或者刷新的影响不同
- GET在浏览器回退时是无害的,
- POST方法在刷新或者回退后数据会被重新提交(浏览器应该告知用户数据会被重新提交)
5)编码方式不同
- GET请求只能进行url编码,
- POST支持多种编码方式。
6)参数
-
GET请求在URL中传送的参数是有长度限制的,对参数的数据类型,GET只接受ASCII字符。
-
POST方法对参数的长度以及数据类型无限制。
4)资源重定向
URL 重定向,也称为 URL 转发,是一种当实际资源,如单个页面、表单或者整个 Web 应用被迁移到新的 URL 下的时候,保持(原有)链接可用的技术。HTTP 协议提供了一种特殊形式的响应—— HTTP 重定向(HTTP redirects)来执行此类操作。
在 HTTP 协议中,重定向操作由服务器通过发送特殊的响应(即 redirects)而触发。HTTP 协议的重定向响应的状态码为 3xx 。
浏览器在接收到重定向响应的时候,会采用该响应提供的新的URL,并立即进行加载;大多数情况下,除了会有一小部分性能损失之外,重定向操作对于用户来说是不可见的。
重定向可实现许多目标:
-
站点维护或停机期间的临时重定向。
-
永久重定向将在更改站点的URL,上传文件时的进度页等之后保留现有的链接/书签。
-
上传文件时的表示进度的页面。
1.资源重定向的分类
分为永久重定向,临时重定向、特殊重定向
1)永久重定向:
-
这种重定向操作是永久性的。它表示原 URL 不应再被使用,而应该优先选用新的URL。
-
搜索引擎机器人会在遇到该状态码时触发更新操作,在其索引库中修改与该资源相关的 URL 。
2)临时重定向:
-
有时候请求的资源无法从其标准地址访问,但是却可以从另外的地方访问。在这种情况下可以使用临时重定向。
-
搜索引擎不会记录该新的、临时的链接。在创建、更新或者删除资源的时候,临时重定向也可以用于显示临时性的进度页面。
3)特殊重定向: -
304 (Not Modified,资源未被修改):
协商缓存命中时返回,使页面跳转到本地陈旧的缓存版本当中 -
300 (Multiple Choice,多项选择):手工重定向
以 Web 页面形式呈现在浏览器中的消息主体包含了一个可能的重定向链接的列表,用户可以从中进行选择。
2.资源重定向的应用场景
有以下几种应用场景可以使用重定向机制,但是需要注意应该尽可能地限制其使用数量,因为每一次重定向都会带来性能上的开销。
1)域名别称:
- 理想情况下,一项资源只有一个访问位置,也就是只有一个 URL 。但是由于种种原因,需要为资源设定不同的名称(即不同的域名,例如带有和不带有 www 前缀的URL,以及简短易记的 URL 等)。在这种情况下,实用的方法是将其重定向到那个实际的(标准的)URL,而不是复制资源。
在以下几种情况下可以使用域名别称:
- 扩大站点的用户覆盖面。
一个常见的场景是,假如站点位于 www.example.com 域名下,那么通过 example.com 也应该可以访问到。
这种情况下,可以建立从 example.com 的页面到www.example.com 的重定向映射。
此外还可以提供常见的同义词,或者该域名容易导致的拼写错误的域名别称。
- 迁移到另外一个域名。
例如,公司改名后,你希望用户在搜索旧名称的时候,依然可以访问到应用了新名称的站点。
- 强制使用 HTTPS 协议。
对于 HTTP 版本站点的请求会被重定向至采用了 HTTPS 协议的版本。
2)保持链接有效:
- 当你重构 Web 站点的时候,资源的 URL 会发生改变。即便是你可以更新站点内部的链接来适应新的命名体系,但无法控制被外部资源使用的URL 。
- 你并不想因此而使旧链接失效,因为它们会为你带来宝贵的用户(并且帮助优化你的SEO),所以需要建立从旧链接到新链接的重定向映射。
3)对于不安全请求的临时响应
-
不安全(Unsafe)请求会修改服务器端的状态,应该避免用户无意的重复操作。
-
通常,你并不想要你的用户重复发送 PUT、POST 或 DELETE请求。假如你仅仅为该类请求返回响应的话,简单地点击刷新按钮就会(可能会有一个确认信息)导致请求的重复发送。
-
在这种情况下,服务器可以返回一个 303 (See Other)响应,其中含有合适的响应信息。如果刷新按钮被点击的话,只会导致该页面被刷新,而不会重复提交不安全的请求
4)对于耗时请求的临时响应:
- 一些请求的处理会需要比较长的时间,比如有时候 DELETE 请求会被安排为稍后处理。在这种情况下,会返回一个 303 (See Other) 重定向响应,该响应链接到一个页面,表示请求的操作已经被列入计划,并且最终会通知用户操作的进展情况,或者允许用户将其取消。
2.HTTP常见头
1.Accept:
text/html, application/xhtml+xml; application/xml,q=0.9; image/webp; image/apng;/, q=0.8
作用:向服务器申明客户端(浏览器)可以接受的媒体类型(MIME)的资源
解释:浏览器可以接受text/html、application/xhtml+xml、application/xml类型,通配符*/* 表示任意类型的数据。并且浏览器按照该顺序进行接收。( text/html —> application/xhtml+xml —> application/xml)
2、Accept-encoding:
gzip;deflate; br
作用:向服务器申明客户端(浏览器)接收的编码方法,通常为压缩方法
解释:浏览器支持采用经过gzip,deflate 或 br 压缩过的资源
3、Accept-Language:
en-US;en,q=0.9;zh-CN,q=0.8;zh,q=0.7
作用:向服务器申明客户端(浏览器)接收的语言
解释:浏览器能够接受en-US, en 和 zh-CN 三种语言,其中 en-US 的权重最高 ( q 最高为1,最低为 0),服务器优先返回 en-US 语言
延伸:语言与字符集的区别:zh-CN 为汉语,汉语中有许多的编码:gbk2312 等
4、Cache-control: max-age=0
作用:控制浏览器的缓存,常见值为private(私人的)、no-cache、max-age、alidate,默认为 private,根据浏览器查看页面不同的方式来进行区别
解释:浏览器在访问了该页面