You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python requests复用POST获取的Cookie发起GET请求API鉴权失败

问题原因

你的代码有3个核心错误导致Cookie携带失败:

  • 初始化了requests.Session()会话对象但从未使用,这个对象本身会自动在同会话的所有请求中持久化、复用Cookie,完全不需要手动解析提取。
  • 手动字符串切割Cookie的方式容错率极低,很容易出现格式问题,且你自定义请求头时将Cookie对应的头字段错写为复数Cookies,HTTP标准中携带Cookie的请求头名为单数Cookie,服务端无法识别你传入的内容。
  • 第二次GET请求直接调用原生requests.request方法,和之前的登录请求完全没有上下文关联,就算Cookie格式正确也无法自动关联登录状态。
修正后可直接运行的代码
import requests

# 初始化会话实例,同实例发起的所有请求会自动保留、复用Cookie
s = requests.Session()

# 替换为你自己的有效token
your_token = "xxxxxx"
# 登录接口请求
login_resp = s.post(f"https://api.ommasign.com/v1/users/apikey/login?token={your_token}")
print("登录接口返回:", login_resp.json())

# 后续查询请求直接用同一会话实例发起,无需手动传递Cookie
device_resp = s.get(f"https://api.ommasign.com/v1/devices?token={your_token}&status=offline")
result = device_resp.json()
print("设备查询结果:", result)

print("执行完成")
额外注意事项
  • 非必要不要手动解析Cookie:如果遇到特殊场景需要手动传递Cookie,直接调用响应对象的cookies.get_dict()方法拿到标准Cookie键值对,传入后续请求的cookies参数即可,不要自行通过字符串切割处理RequestsCookieJar对象。
  • 同域名下需要保留登录状态的连续请求,全程使用同一个Session实例发起即可,不需要手动处理Cookie、同源请求头等逻辑,requests会自动完成适配。

内容的提问来源于stack exchange,提问作者Mrcheat62055

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 16:36:39