解决 requests cookies 为空的坑

简介: requests cookies 为空的一个坑,两种方案轻松解决。

转载请注明出处❤️

作者:测试蔡坨坨

原文链接: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)

相关文章
|
数据库
FastAPI(53)- Response Headers 响应设置 Headers
FastAPI(53)- Response Headers 响应设置 Headers
537 0
FastAPI(53)- Response Headers 响应设置 Headers
|
1天前
|
算法
记一次requests.get()返回数据乱码问题
【10月更文挑战第21天】使用`requests.get()`请求网页时遇到乱码问题,尝试通过设置`encoding`和使用`apparent_encoding`自动判断编码均无效。最终发现问题是由于请求头中的`Accept-Encoding`包含了`br`(Brotli压缩格式),导致响应内容未被正确解压。移除`Accept-Encoding`中的`br`后,问题得到解决。
|
5月前
|
安全 网络安全 数据安全/隐私保护
response.cookies
response.cookies
|
6月前
|
JSON 数据格式
这个错误信息表示在执行`requests.post(url, data=data, headers=head).json()`时出现了问题
这个错误信息表示在执行`requests.post(url, data=data, headers=head).json()`时出现了问题
72 2
|
6月前
给requests请求添加cookie
给requests请求添加cookie
70 0
requests--Cookie设置
requests--Cookie设置
|
测试技术 数据格式 Python
requests--请求头设置
requests--请求头设置
|
JSON Java 数据格式
Postman发送json数据出现HttpMessageNotReadableException: Required request body is missing的几种解决方法以及页面显示400解决
Postman发送json数据出现HttpMessageNotReadableException: Required request body is missing的几种解决方法以及页面显示400解决
488 0
|
前端开发 JavaScript
ajax请求的重定向处理--Request header field x-requested-with is not allowed by Access-Control-Allow-Header
ajax请求的重定向处理--Request header field x-requested-with is not allowed by Access-Control-Allow-Header
471 0