web测试 (HTTP协议)
一、Http
1、http
- 超文本传输协议,是用于从万维网服务器传输超文本到本地浏览器的传送协议
- 使用统一的URL来传输数据和建立连接
- http是一种请求应答协议,客户端发送一个请求,服务器返回该请求的应答
- http使用可靠的TCP连接,默认端口号是80
- 通常情况下访问一个页面,提交一个请求时,需要在浏览器中输入URL地址
- 请求URL的4个部分
- 协议声明,域名/ip、端口、资源路径
2、http1.0
- http1.0 规定浏览器只与服务器进行短暂的连接
- 浏览器每次请求都需要与服务器建立一个TCP连接
- 服务器完成请求处理后,自动断开连接
- 服务器不跟踪,不记录每个客户过去的请求
3、http1.1
- http1.1支持持久性连接
- 在一个TCP连接上可以进行多个请求和响应的处理
- 减少了建立和解除连接所需要的消耗和延迟
- 客户端不需要等待上一次的请求结果的返回就可以发送下一次的请求
- 服务端收到请求进行处理,把处理结果按照请求顺序一次回应
- 减少了整个过程中所需要的时间
4、https
- 安全超文本传输协议
- HTTPS用于安全的HTTP数据传输
- HTTPS有自己默认的端口号443
- HTTPS有一个加密/身份验证层
- 服务端需要申请SSL证书,证书里面表名了加密的公钥和私钥,安装了SSL证书后就可以通过HTTPS来访问服务器了,浏览器的默认端口号会从80变为443
- HTTP是以安全为目标的HTTP通道,被用于万维网上的安全敏感信息,如交易支付或高安全性验证功能方面。
二、Http请求方式
1、http1.0
- GET
- POST
- HEAD
2、http1.1
- GET 请求指定的页面信息,并返回实体主体
- POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据包含在请求体中,POST请求可能会导致新的资源的建立和已有资源的修改
- HEAD 类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头
- PUT 从客户端向服务器传送的数据取代指定的文档的内容
- DELETE 请求服务器删除指定的页面
- CONNECT HTTP1.1协议中预留给能够将连接改为管道方式的代理服务器
- OPTIONS 允许客户端查看服务器的性能
- TRACE 回显服务器收到的请求,主要用于测试或诊断
- PATCH 是对PUT方法的补充,用来对已知资源进行局部更新
3、get请求
- get请求是通过URL来传递数据
- 一个标准的URL网址,在最后有一个querrystring,表示对页面查询
- 用?来表示这部分,内容必须是key = value,多个参数用&来连接,此时页面将能收到这些参数
- 通常把着这种网址及数据的请求称为get
- get请求特点
- 1、便于分享,分享查询页面给别人,别人就能查看到这个页面
- 2、速度快,通常用于安全性不高的请求
- 3、安全性低,会将传递的信息显示在地址栏
- 4、get方式在url后面拼接参数,所以只能以文本的形式传递参数
- 5、传递的数据量小,4kb左右
4、post请求
- 通过表单来发起请求
- 使用表单提交的数据不会出现在URL地址中
- post请求特点
- 安全性能高,url不会暴露信息,请求不会被缓存,也不会保存在浏览器的历史记录中
- 传递的数据量较大,请求对数据长度没限制,图片文件的上传都可以用post
- 不方便文件共享,分析链接的时候,url不可以携带页面信息
5、get post 区别
- get含义是“得到”,所以当你想得到更多信息的时候,比如通过用户输入想要检索一些内容的时候,可以使用get方法。post含义是“发送”,所以当你想要向计算机提交发送信息,比如注册登录这种情况(敏感信息)可以使用post方法
- get请求会被浏览器主动缓存,post不会。get请求的参数会被保留在浏览器记录里,post不会。get请求参数会显示在url中,post不会,因此post请求比get更安全。
- get请求的参数长度有限制,post无限制。get请求的参数的数据类型只能接受ASCII字符,post无限制。get请求只能是用url编码,post支持多种编码。
三、http响应
1、响应头部
- 主要由服务器端返回给客户端,用于获取一些服务器信息
2、响应正文
- 响应中的正文就是用户请求的各类资源的内容
3、正常响应和异常响应
- 1xx :服务器接收到了部分请求,客户端应继续发送其余请求
- 100 Continue
- 2xx : 请求成功,客户端成功接收到响应信息
- 200 OK 请求成功
- 3xx : 重定向,请求页面转换到新的url地址
- 300 Multiple Choice
- 多重选择。链接列表。用户可以选择某链接到达目的地。最多允许五个地址。
- 304 Not Modified
- 未按预期修改文档。
- 客户端有缓冲的文档并发出了一个条件性的请求
- 一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档
- 服务器告诉客户,原来缓冲的文档还可以继续使用。
- 300 Multiple Choice
- 4xx :客户端错误
- 400 Bad Request 服务器未能理解请求
- 401 Unauthorized 被请求的页面需要用户名和密码。
- 402 Payment Required 此代码尚无法使用
- 403 Forbidden 对被请求的页面的访问禁止使用
- 404 Not Found 服务器无法找到请求的页面
- 5xx:服务端错误
- 500 Internal Server Error 请求未完成。服务器遇到不可预知的情况
四 、请求中一些参数的含义
1、GET/oscommerce/index.php HTTP/1.1
- 1、请求类型为get
- 2、http版本为http1.1
- 3、地址为/oscommerce/index.php
2、accept
- 告诉服务器能接受和处理的介质类型
- 如果 * / * 表示可接受所有类型
3、accept -language
- 告诉服务器当前浏览器能接受和处理的语言
- zh-CN(中国中文)en-US(美国英文)
4、user-Agent
- 告诉服务器当前客户端的操作系统
- 告诉客户端当前浏览器内核的版本信息
###5、Accept -Encoding
- 告诉服务器当前客户端支持gzip格式压缩
6、host
- 要访问的服务器主机名或ip地址
7、Connection
- keep -alive
- 告诉服务器,在本次响应结束时不断开TCP请求,等待下次的请求
- 样可以减少打开关闭TCP连接的次数,提升处理性能。
- 另外可选的选项是Close,表明直接响应接收完成后直接将其关闭
8、referer
- 指定发起该请求的源地址
9、Cookie
- 将客户端的Cookie信息发送给服务器端。
10、Overview
- Display URL 表示请求的地址为:http://172.21.200.189/oscommerce/index.php
- Started At 发送请求的时刻,本地时间。
- Connection Reuse 与服务器建立了连接,本地的连接地址和端口为为“172.16.200.126:64859”。
- HTTP Request 通过浏览器发出的请求,这里请求的是http://172.21.200.189/oscommerce/index.php
- HTTP Response 服务器返回的头和内容信息。
- DNT: 1 “禁止追踪”(Do Not Track),三个赋值:1代表用户不想被第三方网站追踪,0代表接受追踪,null代表用户不置可否。
五、cookie session token
1、cookie
- 记录用户的常用配置或设置,服务端将这些配置和设置保存在文件中,并将此文件由服务端发送至客户端,文件保存在客户端中。
- cookie文件是由服务端产生的,保存在客户端,主要作用用于保存用户的常用配置或设置
- 由于http协议是一种无状态的协议,无法记住用户的上一次访问状态
- 会话级cookie:保存在内存中,浏览器关闭cookie会自动消失
- 持久化cookie:保存在硬盘中,生命周期取决于失效时间
- 如何查看cookie
- 查看单个项目的cookie:打开网页——F12——Application——Cookies name/value/domain(作用域)/path/expires(有效时间)
- 查看客户端所有的cookie 浏览器——设置——查看所有cookie
- cookie鉴权如何实现
- 客户端第一次访问服务器时生成cookie,然后通过响应头中的set-cookie传输到客户端,然后在客户端保存
- 客户端第2-N次访问服务器时,在请求的请求头里会自动带上客户端保存的cookie,然后和服务端的cookie进行比对
2、session
- Session是客户端与服务器之间的会话。
- 服务启动以后,服务器会产生一个session文件保存在服务器。
- session文件的名称,称为session的id,此id会包含在cookie中发送至客户端,包含在cookie的value中。
- session中主要保存用户的登录信息、操作信息等
- session鉴权如何实现
- session鉴权依赖于cookie,session_id会存在cookie中,session保存敏感信息,cookie保存其他信息。
- 2-N次客户端发送请求至服务端,请求中包含了cookie的value(seesion_id),将session_id与保存在服务端的session文件名进行匹配,
- 如果匹配,发送对应的响应信息。
- 如果不匹配,返回站点首页,同时在响应消息中包含新的session_id。
3、区别
- 1、cookie由服务器生成保存在客户端,对于一些重要信息(用户名、密码等个人信息)使用cookie保存不安全
- session会在一定时间内保存在服务器上,当访问增多,会比较占用服务器性能,考虑到减轻服务器性能方面要考虑cookie
- 单个cookie保存的数据量不能超过4k,很多浏览器都限制站点最多保存20个cookie。
- session存储在客户端没有存储数据量的限制,可以保存更为复杂的数据类型
- 二者的生命周期不同,
- cookie的生命周期是累计的,从创建开始计时。
- session的生命周期是间隔的,一定时间内没有访问session。则销毁。访问了则会重新计时
4、token
- token的意思是“令牌”,是服务器生成的一段加密字符串,然后返回给客户端
- token使用场景
- 用户登录成功后, 需要反复到服务器获取敏感数据,服务器对每次请求都要验证是哪位用户发送的, 且用户是否合法, 需要反复查询数据库, 对数据库造成过大压力
- 电商项目,访问服务器的人成千上万,每一个用户的登录信息都会存放到session中,用作鉴权处理,服务器内存承受不
- token的鉴权处理
- 当用户第一次登陆,服务端会签发一个token_id,
- 再把这个token_id通过cookie发送给客户端,
- 客户端每次向服务端请求资源的时候,都必须携带token_id,
请求都要验证是哪位用户发送的, 且用户是否合法, 需要反复查询数据库, 对数据库造成过大压力 - 电商项目,访问服务器的人成千上万,每一个用户的登录信息都会存放到session中,用作鉴权处理,服务器内存承受不
- token的鉴权处理
- 当用户第一次登陆,服务端会签发一个token_id,
- 再把这个token_id通过cookie发送给客户端,
- 客户端每次向服务端请求资源的时候,都必须携带token_id,
- 服务器直接解密token_id就可以知道用户的相关信息,达到鉴权的效