解决 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
471 0
FastAPI(53)- Response Headers 响应设置 Headers
|
2天前
|
存储 JSON 安全
|
2天前
给requests请求添加cookie
给requests请求添加cookie
45 0
|
2天前
|
存储 移动开发 前端开发
HTTP请求中token、cookie、session有什么区别
HTTP请求中token、cookie、session有什么区别
150 0
|
2天前
|
JSON 数据格式
这个错误信息表示在执行`requests.post(url, data=data, headers=head).json()`时出现了问题
这个错误信息表示在执行`requests.post(url, data=data, headers=head).json()`时出现了问题
40 2
|
9月前
|
Java
requests--Cookie设置
requests--Cookie设置
|
9月前
|
测试技术 数据格式 Python
requests--请求头设置
requests--请求头设置
|
10月前
|
前端开发 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
324 0
|
10月前
|
存储 前端开发 数据库
Session、Cookie和Token的主要区别
Session、Cookie和Token的主要区别
195 1