首页 > 解决方案 > Python requests.Session 缺少 cookie 问题

问题描述

我有一个与第三方 API 通信的 FastAPI 项目。应该使用完成登录过程后提供的一些 cookie 来授权对该 API 的请求。我执行此登录过程一次,然后为每个请求设置检索到的 cookie。我为此使用 requests 2.25.1 库。

问题是某些请求是在没有这些 cookie 的情况下发送的。这是我的项目中实现的方法之一的代码片段:

@staticmethod
def __get_driver_rides(
        cookies: RequestsCookieJar,
        driver_uid: str,
        start_timestamp: int,
        end_timestamp: int
) -> List[Ride]:
    session = Session()
    session.headers = HEADERS
    session.cookies = cookies
    session.params['page'] = 1  # type: ignore
    session.params['pageSize'] = str(RIDES_PAGE_SIZE)
    session.params['from'] = str(start_timestamp)
    session.params['to'] = str(end_timestamp)

    url = f'https://<THIRD_PARTY_API>/drivers/{driver_uid}/rides'

    has_next = True
    while has_next:
        response = session.get(url)
        try:
            response.raise_for_status()
        except HTTPError as e:
            raise ServiceError(e) from e
    ...

在这个阶段,我会定期捕获 401 Unauthorized 状态代码。我碰巧在调试器中重现了这种情况并检查了一个Response对象。它的request字段 ( Response.request) 不包含任何 cookie,但Session我用来执行请求的对象包含。这是演示它的调试器屏幕截图:

调试器屏幕截图

标签: pythoncookiespython-requestsfastapi

解决方案


推荐阅读