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

Python中使用Bearer令牌调用Confluence API失败的问题排查

问题分析与解决

问题描述

使用Python requests库通过Personal Access Token (PAT)调用Confluence API时返回401错误,令牌页面显示从未被使用,但以下方式均能正常访问:

  • 测试多个不同的PAT
  • 直接使用curl命令调用
  • 使用auth=(user, pass)方式认证
  • 通过subprocess执行curl调用

可能的问题点及解决方案

1. Accept请求头大小写问题

你的代码中Accept头的值写为Application/json,HTTP标准里MIME类型通常采用小写格式(application/json),部分服务对这个值的大小写敏感,可能导致服务端解析异常,进而拒绝认证。

修改headers中的Accept值为小写:

h = {
    'Accept': 'application/json',
    'Authorization': f'Bearer {token}'
}

2. 验证实际发送的请求头

可以打印requests实际发送的请求头,确认Authorization头是否正确传递:

response = requests.get(url, headers=h)
print(response.request.headers)

对比curl发送的请求头(用curl -v查看详细请求信息),检查是否存在差异,比如requests是否自动添加了其他冲突的头字段。

3. 备选认证方式(适配Confluence PAT)

部分Confluence实例支持将PAT作为密码,用户名填写任意值(或你的注册邮箱),可以尝试这种方式替代Bearer头:

# 用邮箱作为用户名
response = requests.get(url, auth=('your_email@example.com', token))
# 或填写任意字符串作为用户名
response = requests.get(url, auth=('any_string', token))

验证方法

修改后重新发起请求,查看返回状态码,同时检查Confluence的令牌页面是否显示令牌已被使用,以此确认认证是否成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 11:33:15