• 接口测试-基础


    1 网络传输知识

    1.1 协议

    HTTP(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议。

    1.2 Cache

    • 浏览器缓存
    • 代理缓存
    • 网关缓存

    1.3 Cooike

    Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。

    1.4 Session(会话)

    Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。

    通过Cookie传输:

    URL地址重写,对客户端不支持Cookie的解决方案。将用户Session信息重写到URL地址中。

    cookie与session的区别

    1. cookie数据存放在客户的浏览器上,session数据放在服务器上;
    2. cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session;
    3. session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。考虑到减轻服务器性能方面,应当使用COOKIE;
    4. 单个cookie在客户端的限制是4K,就是说一个站点在客户端存放的COOKIE不能超过4K。

    1.5 token(令牌)

     使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的:

      1. 客户端使用用户名跟密码请求登录
      2. 服务端收到请求,去验证用户名与密码
      3. 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
      4. 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里
      5. 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
      6. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据

    Token机制相对于Cookie机制又有什么好处呢?

    • 支持跨域访问: Cookie是不允许垮域访问的,这一点对Token机制是不存在的,前提是传输的用户认证信息通过HTTP头传输.
    • 无状态(也称:服务端可扩展行):Token机制在服务端不需要存储session信息,因为Token 自身包含了所有登录用户的信息,只需要在客户端的cookie或本地介质存储状态信息.
    • 更适用CDN: 可以通过内容分发网络请求你服务端的所有资料(如:javascript,HTML,图片等),而你的服务端只要提供API即可.
    • 去耦: 不需要绑定到一个特定的身份验证方案。Token可以在任何地方生成,只要在你的API被调用的时候,你可以进行Token生成调用即可.
    • 更适用于移动应用: 当你的客户端是一个原生平台(iOS, Android,Windows 8等)时,Cookie是不被支持的(你需要通过Cookie容器进行处理),这时采用Token认证机制就会简单得多。
    • CSRF:因为不再依赖于Cookie,所以你就不需要考虑对CSRF(跨站请求伪造)的防范。
    • 性能: 一次网络往返时间(通过数据库查询session信息)总比做一次HMACSHA256计算 的Token验证和解析要费时得多.
    • 不需要为登录页面做特殊处理: 如果你使用Protractor 做功能测试的时候,不再需要为登录页面做特殊处理.
    • 基于标准化:你的API可以采用标准化的 JSON Web Token (JWT). 这个标准已经存在多个后端库(.NET, Ruby, Java,Python, PHP)和多家公司的支持(如:Firebase,Google, Microsoft

    1.6 JWT

    JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息.

    JWT组成:一个JWT实际上就是一个字符串,由三部分组成,头部、载荷与签名。

    header :1.Token 的类型  2.使用的算法。

    Payload 是Token 的具体内容:

    • iss:Issuer,发行者
    • sub:Subject,主题
    • aud:Audience,观众
    • exp:Expiration time,过期时间
    • nbf:Not before
    • iat:Issued at,发行时间
    • jti:JWT ID

    Signature:1.用 Base64 编码的 header.payload  2.加密算法加密 3.加密需要提供一个Secret(密钥)。密钥存储在服务端。

    2 HTTP协议

    URL:Uniform Resource Locator,统一资源定位符。

    2.1 HTTP请求

    HTTP请求由三部分组成,分别是:请求行、消息报头、请求正文。

    请求方法:

             GET        请求获取Request-URI所标识的资源
             POST       在Request-URI所标识的资源后附加新的数据,常用于提交表单
             HEAD       请求获取由Request-URI所标识的资源的响应消息报头
             PUT        请求服务器存储一个资源,并用Request-URI作为其标识
             DELETE     请求服务器删除Request-URI所标识的资源
             TRACE      请求服务器回送收到的请求信息,主要用于测试或诊断
                        可以追踪一次请求中间所经过的代理服务器有哪些
             CONNECT    保留将来使用
             OPTIONS    请求查询服务器的性能,或者查询与资源相关的选项和需求
                        可以用来获取服务器端资源支持的方法

    2.2 请求响应

    HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文。

    3 HTTP协议

    什么是HTTPS:与SSL(安全套接层)组合使用的HTTP被称为HTTPS(HTTP Secure,超文本传输安全协议)。

    4 WebSocket协议

    WebSocket是一个持久化协议,升级原有HTTP中通过long poll和Ajax轮询方式,Websocket只需要一次HTTP握手,所以说整个通讯过程是建立在一次连接/状态中,也就避免了HTTP的非状态性,服务端会一直知道你的信息,直到你关闭请求。

  • 相关阅读:
    错误:Error:未定义标识符"_TCHAR"
    C#中DateTime应用
    随机打乱数组元素
    C++中的运算符重载
    C#中的运算符重载
    C#访问修饰符
    VS2010中将当前选定项目做为启动项
    VS2010 ctrl+F5闪退解决方法
    IntelliSense: 应输入声明的解决方案
    C++数据类型范围
  • 原文地址:https://www.cnblogs.com/cirr-zhou/p/9367935.html
Copyright © 2020-2023  润新知