You need to enable JavaScript to run this app. Python Flask 如何在请求头传递生成的Token?解决带Token调用prospect接口的问题
优惠活动
大模型
产品
解决方案
定价
更多

Python Flask 如何在请求头传递生成的Token?解决带Token调用prospect接口的问题

现有代码的核心问题
  • 把requests返回的完整HTTP响应对象直接当作Token值使用:代码里token1 = requests.request("POST", url, ...)拿到的是整个响应实例,不是接口返回的Token字符串,把这个实例塞到请求头里完全无法被服务端解析
  • 未遵循接口鉴权的头部格式规范:绝大多数接口要求Authorization头的格式为Bearer <有效Token字符串>,直接把未格式化的内容传入会被判定为非法请求
  • 手动拼接带转义的JSON payload的写法容易引入隐形格式错误(比如原代码payload末尾附带的\r\n),会增加接口解析失败的概率
修正后可直接运行的代码
import requests

# 1. 发起登录请求
login_url = "http://website/login"
# 直接用字典传登录凭证,由requests自动完成JSON序列化,不需要手动转义
login_payload = {
    "username": "abc@test.com",
    "password": "password"
}
login_headers = {
    'Content-Type': 'application/json'
}
login_response = requests.post(login_url, headers=login_headers, json=login_payload)

# 从登录响应中提取真实Token值
# 先打印响应结构确认Token所在字段,常见字段名:token、access_token,部分接口会嵌套在data字段下
login_response.raise_for_status() # 校验登录请求是否成功,失败直接抛错
actual_token = login_response.json().get("token") # 替换为你接口实际返回的Token字段路径

# 2. 携带Token调用prospect接口
prospect_url = "http://website/prospect"
prospect_headers = {
    'Content-Type': 'application/json',
    # 按通用鉴权规范拼接Token,若接口不需要Bearer前缀可直接传actual_token
    'Authorization': f'Bearer {actual_token}'
}
prospect_response = requests.get(prospect_url, headers=prospect_headers)
print(prospect_response.text)
实操排查注意事项
  • 拿到登录响应后先打印完整的返回JSON,确认Token的实际存储位置,避免取错字段导致传入空值
  • 提取Token后可先打印字符串内容,确认没有多余的换行、引号等隐形字符,再拼接到请求头中
  • 若调用prospect接口仍返回401/403错误,可对照接口文档确认Authorization头的要求,部分接口会要求把Token放在自定义请求头(比如X-Auth-Token)而非通用的Authorization头中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.09 09:54:04