HTTP协议

网络分层模型

OSI7层模型

1、应用层:采用何种协议

2、表示层:数据格式和标准的格式转换--图片、文字、声音

3、会话层:何时建立连接,保持多久

4、传输层:管理2个节点之间的数据传输。负责可靠传输

5、网络层:地址管理和路由选择,经过哪个路由更近更快的传递到目标地址。

6、数据链路层:Mac地址,负责数据帧和比特流之间的转换。

7、物理层:功能:传输信息的介质规格、将数据以实体呈现并传输的规格、接头规格。该层包括物理连网媒介;检查电压,不提供纠错服务。

TCP/IP 4层模型

应用层(HTTP、SMTP、FTP、Telnet协议)

传输层(TCP、UDP协议)

网络层(IP协议)

网络接口层(Ethernet等)

HTTPS的连接过程

1、浏览器访问HTTPS的网站,要求与Web服务器建立SSL连接。

2、Web服务器收到客户端的请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端

3、客户浏览器验证服务器送过来的证书,是否由自己信赖的CA中心所签发的。如果是,就继续执行协议;如果不是,客户浏览器就给客户一个警告信息:警告客户这个证书是不可信赖的,询问客户是否需要继续。接着客户浏览器比较证书里的消息,例如域名和公钥,与服务器刚刚发送的相关信息是否一致,如果是一致的,客户浏览器认可这个服务器的合法身份。

4、客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。

5、Web服务器利用自己的私钥解密出会话密钥

6、Web服务器利用会话密钥加密与客户端之间的通信

HTTPS协议特点

1、HTTP:无证书、明文传输、80端口、无身份认证、无完整性校验

2、HTTPS:有证书、密文传输、443端口、有身份认证、有完整性校验

HTTP请求报文

1、请求行

      请求方法、请求路径、请求协议/版本路径

2、请求头

      从第二行到第N行。由“键值对”组成。可以有1对,也可以有N对。key:value

3、空行(区分请求头和请求正文)

4、请求正文(有的有,有的没有)

      请求正文(体),可选项。

前端:用户能够看到的所有的界面的系统

后端:服务器(系统)

前台:淘宝买家端

后台:淘宝卖家端

HTTP响应报文

1、状态行

      报文协议及版本 、状态码及状态描述

2、响应头

3、空行

4、响应正文

HTTP请求方法:GET/POST

get:向特定的资源发出请求。

post:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

PUT:向全部资源位置上传其最新的内容,上传文件。

PATCH:是局部信息更新上传

DELETE:请求服务器删除Request-URL所标识的资源

TRACE:回显服务器收到的请求,主要用于测试和诊断。

OPTIONS:是用于请求获得由Request-URL标识的资源在请求/响应的通信过程中可以使用的功能选项。---黑客

HEAD:向服务器获取响应信息头中的信息

CONNECT HTTP/1.1协议中预留给能将链接改为管道方式的代理服务器。

GET方法和POST方法的区别:

GET方法:

------提交数据不安全,数据置于请求行,浏览器地址栏可见;

------URL长度每个浏览器限制数量不同,最后在2000字符以内

------GET方法速度快

------默认的请求方法,不需要提交大量数据、无敏感、保密数据时使用

POST方法:

------提交的数据安全,数据置于消息主体内,浏览器地址栏不可见

------提交的数据大小没有限制

------POST方法速度慢

------需要提交大量数据、有敏感、保密数据时使用

HTTP响应状态码

200:客户端请求成功

301:永久性重定向

302:临时性重定向

403:服务器收到请求,但拒绝提供服务

404:请求的资源不存在

500:服务器发生不可预期的错误

Content-Type参数

叫:是Internet Media Type,互联网媒体类型。存在于请求中或响应中:

如果出现在请求中,则表示:告诉服务端客户端实际发送的数据类型

如果出现在响应中,则表示:告诉客户端服务端实际发送的数据类型。

在请求中,常见的数据类型有:

application/x-www-form-urlencoded------> 以“键值对”的方式组织的数据

multipart/form-data------>一般需要上传文件的表单则用该类型

application/json------> Json字符串提交数据

Fidder抓包原理:

定义:是一个HTTP协议调试代理工具。它能记录并检查所有你的电脑和互联网之间的HTTP/HTTPS通讯,设置断点,查看所有“进出”的Fidder的数据(如cookie,html,js,css等资源)

关键词:HTTP协议代理,也就是说,它只能抓取HTTP请求(韩HTTPS)

在客户端和服务器之间,建立一个HTTP代理服务器

当启动的时候,Fiddler会默认把自己设置为系统代理

默认代理地址为127.0.0.1 默认端口为:8888

浏览器访问web网站的时候,请求会先发送到Fiddler

Fiddler再把请求转发给服务器

web服务器返回的响应,也会先到达Fiddler

Fiddler再把响应返回给浏览器

设置http之后,打开百度,报错不能抓取百度信息

------chrome://net-internals/#hsts

拉取到页面最下:在输入框中输入:www.baidu.com,点击delete按键,刷新百度页面抓包

Fiddler面板功能

inspector:定位bug是前端还是后端,报文

autoresponder:自动应答

composer:模拟器,接口测试

请求前断言

1、暂停抓包

2、进入界面设置数据信息

3、Fiddler-->设置请求前断言

4、开启抓包,且到界面进行提交等操作

5、找到请求,webform,修改请求参数

6、点击breakpoint-->run to completion,直到请求完成

7、验证界面数据

点击开始抓包,同时在百度输入框中,点击搜索

修改上图中的"哈哈哈",

之后分别点击“1”和“2”,最后再看百度

适用场景:如字段长度受限制的情况,可以通过该方法进行接口的相应信息确认。

验证不符合前端设置的数据传输后,业务逻辑的判断

修改响应报文

1、设置请求后断言

2、页面操作数据

3、在fiddler响应的textview修改响应的数据信息

4、点击run to comppletion

5、查看页面数据

使用场景:UI测试汇总,超长字符串的显示问题

自动应答

1、抓包获取请求

2、右击请求-->save--->保存响应--->响应体.json

3、修改文件,以text文本格式打开

4、fiddler--->enable rules

5、选择刚才的请求,点击添加按键

6、在下面的响应字段中选择刚才修改的数据文件.json

7、开启抓包,刷新页面

适用场景:在接口没有完成的情况下,可以模拟接口请求相应

模拟器适用

1、点击compser

2、拖拽到有请求参数的请求到compser

3、在request body中依据测试用例设计的数据进行修改参数(接口测试用例)

4、点击执行按键,就可以模拟接口测试

Cookie组成

1、Key = Value:键值对,可以设置要保存的Key/Value,注意这里的NAME不能和其他属性项的名字一样

2、Expires:过期时间,在设置的某个时间点后该Cookie就会失败

3、Domain:生成该Cookie的域名,如domain = “www.baidu.com”

4、Path:该Cookie是在当前的哪个路径下生成的,如path = /WP-admin

5、Secure:指定是否使用HTTPS安全协议发送Cookie,true---只能在HTTPS连接中传输,HTTP链接不会传输,所以不会被窃取到Cookie的具体内容,false---HTTP、HTTPS链接都可以传输

6、HttpOnly:如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息,这样能有效的防止XSS攻击。

Cookie产生

1、客户端的某次请求--->发送给服务器

2、服务器产生一个Cookie,附加在HTTP响应头中(Set-Cookie),传递给客户端浏览器--->浏览器保存cookie

3、客户端之后的所有请求,都会把Cookie附加在HTTP请求头中,传递给服务器--->服务器校验有用额Cookie信息

首次登陆某系统是否会有Cookie,是根据该系统架构而定的。

Cookie类型

按照过期时间:Cookie会分为2类,会话cookie和持久cookie

会话cookie是一种临时cookie,用户退出浏览器,会话Cookie就会被删除

持久cookie则会存储在硬盘里,保留时间更长,关闭浏览器,重启电脑,它依然存在

应用场景:记住用户名和密码(自动登录),购物车功能

Cookie和Set-Cookie

Cookie是请求带的

Set-Cookie是响应带的

Cookie测试点

1、检查Cookie是否能正常工作

2、是否按预定的时间进行保存

3、刷新对Cookie有什么影响等

4、禁用或删除cookie是否友好提示(重新登录等)

Cookie与缓存的区别

缓存只是对静态资源的处理,Cookie是一种动态机制

缓存大小受资源和磁盘空间的限制

Cookie本身有大小限制,一般浏览器限制大小不能超过4KB

缓存不会发送服务器,cookie会与请求一起自动发送

作用不一样,缓存浏览器就可以从本地磁盘显示文档,可以加速页面的阅览,Cookie是服务器辨别用户身份,维护通信传输状态。

Session介绍

文件Session一般叫做会话,进行某些获得持续的一段时间。从打开某个网站到关闭浏览器,这是一个会话。

Session产生

Session一定是服务端创建的

服务器创建的Session标识是全局唯一的一串字符

服务器创建的Session标识一半存储在服务器内存中

Session标识被发往浏览器时。会设置过期时间为1970年1月1日前的1秒。表示一个过去式

服务器创建的Session标识通过HTTP响应头中Set-Cookie发送给客户端

浏览器拿到Session标识后。会临时存储。因为它是一个会话Cookie,所以浏览器关闭,他就消失。

Session有超时设置,如果到了超时时间,系统就会自动把Session注销

Session有注销机制,调用invalidate方法,可以注销Sessin

通常关闭应用(Tomcat),所有的Session都会被注销,关闭服务器

注:关闭浏览器不会注销Se的

Session和Cookie实现登陆

Java项目通常做法:

但浏览器发送请求时,服务器会自动判断浏览器是否带有Sessionid

如果没有带Sessionid,立马生成一个全新的Sessionid给他

如果带有Sessionid,会校验服务器内存是否存在,如果不存在,则立马生成一个全新的给他

如果有带Sessionid,会校验服务器内存是否存在,如果存在,则不处理

之后的每次请求,都会刷新服务端SessionID的有效期

到这里为止,不管用户是否已经登录。客户端都有可以用的Sessionid

当输入正确的用户名、密码、点登录按钮。如果登陆成功,程序员会把Sessionid存入到另一个【内存变量中2】容器中

之后的每次请求,权限拦截器都会拦截到你的Sessionid,并和内存中的【内存变量中2】进行查找,如果发现查不到,则会帮你重定向到登录界面

当客户端主动注销,服务器会调用invalidate方法注销服务器上的Session,并重定向到登录界面,又会产生新的Sessinid

其他项目做法:

当输入正确的用户名、密码,点击登录按钮,入股登录成功

服务器会生成一个Sessionid,返回给客户端,客户端浏览器存到cookie

当用户注销,服务端会同时删除服务端Sessionid和客户端cookie

Cookie和Session的区别

1、cookie数据存放在客户的浏览器上,session数据存放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用服务器性能,考虑到减轻服务器性能方面,应当使用cookie

4、单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点,最多保存20个cookie

5、一般建议:将登陆信息等重要信息存放到sesion,其他信息如果可以保留,可以存放到cookie中。

总结:

1、cookie:保存在浏览器中,有大小限制,有状态

2、session:保存在服务器中,服务器有资源开销,分布式、跨系统不好实现

3、Token(一般用于接口测试):客户端可以将Token保存在任何地方,无限制,无状态,利于分布式部署

知道别人的sessionID,怎么直接登录?

1、f12复制登录后的sessionID值

2、复制任意一个需要登录才能访问的页面的url

3、浏览器B中打开步骤2的url,会跳转到登录界面

4、浏览器b,F12把sessionid改成第一步复制的值

5、浏览器b地址栏打开步骤2的url,成功了就不会跳转登录界面

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dijiaye1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值