zoukankan      html  css  js  c++  java
  • 401的错误分析

    在接口的测试中,经常会遇到客户端向服务端发送一个请求,服务端返回401的错误,那么今天本文章就来说明在接口测试中如何分析以及解决该问题。

    我们知道在HTTP返回的状态码中,401错误表示的是被请求的页面需要用户名和密码。401的错误详细的可以描述为:客户端发送请求抖到服务端,页面需要验证服务端会返回401的错误,见如下的错误信息:

    401 UNAUTHORIZED

    Headers

    Content-Type: application/jsonWWW-Authenticate: Basic realm="Authentication Required"Content-Length: 37Server: Werkzeug/0.11.13 Python/2.7.12Date: Wed, 14 Mar 2018 14:57:24 GMT
    {  "error": "Unauthorized access"}

    依据错误的信息可以获取到,发送的请求需要有通过HTTP的认证的认证信息,如果在浏览器中访问,会直接弹出需要输入用户名和密码的弹出框,见截图:

    那么在HTTP的认证中,经常会被使用到认证方式分别是BASIC认证和DIGEST认证,我们具体来看BASIC的认证方式是一种流行,行业标准的身份验证方式,是在HTTP1.0中指定。主要是指使用用户ID和密码使用Base64编码标准进行编码,并通过HTTP进行传属,只有当用户ID和密码有效时,服务器才允许用户访问。

    在我们的案例中,使用的认证方式是BASIC的认证方式,那么在客户端向服务端发送请求的时候,带上用户信息,再次请求可以成功。在postman中的Basic auth指定用户名和密码,见请求成功的信息:

    Response (20.345s) - http://localhost:5000/hotel/username/

    200 OK

    Headers

    Content-Type: application/jsonContent-Length: 308Server: Werkzeug/0.11.13 Python/2.7.12Date: Wed, 14 Mar 2018 15:09:33 GMT
    {  "datas": 
      [
        {      
           "check in": "2018-03-08 08:20:10",      
           "check out": "2018-03-09 14:00:00",      
           "identity card": "23012919950425723X",      
           "phone": "13484545190",      
            "room number": "1104",      
            "userid": 1,      
            "username": "李四",      
            "vpl": "京AJ3585"
        }
      ]
    }

    当然我们也可以使用requests轻松的解决这部分,见实现的代码:

    #!/usr/bin/env python
    #-*-coding:utf-8-*-
    
    import  requests
    
    r=requests.get(
       'http://localhost:5000/hotel/username/',
       auth=('wuya','admin'))
    print r.text

    或者直接指定HTTPBasic,见修改后的代码:

    #!/usr/bin/env python 
    #-*-coding:utf-8-*-
    
    import  requests
    from requests.auth import  HTTPBasicAuth
    
    r=requests.get(
       'http://localhost:5000/hotel/username/',
       auth=HTTPBasicAuth('wuya','admin'))
    print r.text
  • 相关阅读:
    665. Non-decreasing Array
    35. Search Insert Position
    CompositePattern(组合模式)-----Java/.Net
    BridgePattern(桥接模式)-----Java/.Net
    AdapterPattern(适配器模式)-----Java/.Net
    设计模式系列:原型模式(Prototype Pattern)
    设计模式系列:抽象工厂模式(Abstract Factory Pattern)
    设计模式系列:工厂方法模式(Factory Method Pattern)
    设计模式系列:简单工厂模式(Simple Factory Pattern)
    设计模式系列:单例模式(Singleton Pattern)
  • 原文地址:https://www.cnblogs.com/xsj1/p/11197087.html
Copyright © 2011-2022 走看看