首页 > 其他分享 >解决 requests cookies 为空的坑

解决 requests cookies 为空的坑

时间:2023-01-18 01:11:29浏览次数:57  
标签:cookies url self jar cookie 为空 requests

转载请注明出处❤️

作者:测试蔡坨坨

原文链接:caituotuo.top/5d14f0d7.html


你好,我是测试蔡坨坨。

我们在做接口自动化测试的时候,一般会通过调用登录接口来获取cookies。

有时候,requests 返回的 cookies 会为空,原因是因为链接发生了 301/302 重定向跳转,而 cookies 是跟着第一个响应返回的,第二个响应没有返回 Set-Cookie header。所以直接读取 r.cookies 就是空的,但是在 session.cookies 中是有数据的。

这里提供两种解决方案。

方法1 关闭重定向

在请求参数中加入"allow_redirects": False关闭重定向。

    def login(self):
        req = {
            "url": self.url + "/passport/login",
            "method": "post",
            "data": {
                "username": self.username,
                "password": self.password
            },
            "allow_redirects": False  # 关闭重定向
        }
        res = requests.request(**req)
        cookie_jar = res.cookies
        print(cookie_jar)
        cookie = requests.utils.dict_from_cookiejar(cookie_jar)
        print(cookie)

方法2 直接读 s.cookies

    def login(self):
        url = self.url + "/passport/login"
        data = {
            "username": self.username,
            "password": self.password
        }
        s = requests.Session()
        s.post(url=url, data=data)
        cookie_jar = s.cookies
        print(cookie_jar)
        cookies = requests.utils.dict_from_cookiejar(cookie_jar)
        s.cookies.clear()
        print(cookies)

标签:cookies,url,self,jar,cookie,为空,requests
From: https://www.cnblogs.com/caituotuo/p/17059013.html

相关文章

  • 4.Requests【HTTP协议】响应
    一、前言当然,有请求就有响应,浏览器在接收到服务端的响应数据后,经过处理将有用的信息展示到浏览器上。所以,接口自动化也需要对响应内容进行解析或提取有用的数据。二、学......
  • 5.Requests【接口请求】requests模拟发送get请求
    一、前言在前面的课程中我们讲了fiddler的使用,其实对应接口自动化来说,只需要知道怎么通过inspectors页签获取接口信息即可,关于fiddler的其他使用在接口测试中才会使用。......
  • 6.Requests【接口请求】requests模拟发送post请求
    一、前言上节课我们讲到了如何通过requests模块模拟发送get请求,我们这节课学习一下另一个常见的http请求方式:post请求。与get不同的是,post请求可以传请求体,而get没有请求......
  • 7.Requests【接口请求】POST请求的data格式请求体传参
    一、前言我们上节课简单学习了只有url的post请求,但是在实际场景中,与get请求不同的是post请求是有请求体的,数据除了请求方发送之外,还要服务端能够解析才有意义。而这个解析......
  • 8.Requests【接口请求】POST请求的json格式请求体传参
    一、前言我们上节课已经学习了Content-Type:application/x-www-form-urlencoded时的传参方式,可以用data来传参。还有一种常见的接口数据传输类型,application/json格式,顾......
  • 9.Requests【接口请求】POST请求的files格式请求体传参(文件上传)
    一、前言前面的课程中已经学习了两种POST请求中文件的传输格式,还有一种格式,Content-Type:multipart/form-data时的传参方式,这种数据传输方式的接口一般是文件上传接口,可......
  • 11.Requests【接口请求】requests模拟headers传参
    一、前言我们在讲http协议的时候,已经了解到接口的请求存在请求体,也叫header。其实在模拟接口请求时,如果后台没有对header中的参数做校验,则可以不用传header信息,比如我们上......
  • 10.Requests【接口请求】requests模拟QuertString查询字符串传参
    一、前言无论是get,还是post请求,我们在模拟接口请求中往往会遇到url中包含形如?name=xiaoming&age=18这种的参数,这种参数是通过url传递到服务器的,像这种参数怎么通过reque......
  • 12.Requests【接口请求】requests模拟cookies传参
    一、前言Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来......
  • 2.Requests【HTTP协议】http协议简介
    一、前言什么是接口?接口就是HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器......