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

使用Python通过PAT向Azure DevOps发Get请求遇203错误求助

解决Azure DevOps API请求返回203的问题

你遇到的203问题大概率是认证方式的细节错误,或者请求头缺少必要字段导致的,结合你描述的场景,我整理了几个关键排查点:

1. Bearer Token方式的误区:PAT不能直接用Bearer认证

Azure DevOps的REST API中,Bearer认证是给OAuth2访问令牌用的,而你的Personal Access Token (PAT) 并不属于这个范畴。如果你硬把PAT放在Authorization: Bearer <PAT>里,服务器会识别为无效认证,返回非授权的203响应——这是最常见的错误点。

2. Basic认证的正确编码方式

当使用PAT做Basic认证时,必须遵循这个规则:

  • 用户名可以是空字符串(或者任意字符串,Azure DevOps会忽略),密码是你的PAT
  • 格式必须是 {username}:{PAT},然后对这个字符串做Base64编码
  • 注意:即使你用空用户名,前面的冒号:也不能省略!

举个正确的Python代码示例:

import requests
import base64

pat = "your_pat_here"
# 关键:空用户名+冒号+PAT
auth_str = f":{pat}"
auth_bytes = auth_str.encode("utf-8")
base64_auth = base64.b64encode(auth_bytes).decode("utf-8")

url = "your_azure_devops_api_url"
headers = {
    "Authorization": f"Basic {base64_auth}",
    "Content-Type": "application/json"  # 根据API需求添加,部分接口需要该字段
}

response = requests.get(url, headers=headers)
print(response.status_code)
print(response.text)

很多人会忘记加前面的冒号,直接对PAT本身编码,这会导致认证失败,返回203。

3. 检查User-Agent请求头

有些Azure DevOps环境会对请求的User-Agent做校验,requests库默认的User-Agent是python-requests/x.x.x,可能被服务器识别为非浏览器请求而返回异常。你可以模拟浏览器的User-Agent试试:

在headers里添加:

headers = {
    # ... 其他已配置的请求头
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}

4. 排查代理或网络环境问题

如果你的浏览器是通过代理访问Azure DevOps的,但requests请求没有配置代理,也可能导致服务器返回203(比如代理服务器返回了非授权的中转信息)。可以在requests中添加代理配置:

proxies = {
    "http": "http://your-proxy:port",
    "https": "https://your-proxy:port"
}
response = requests.get(url, headers=headers, proxies=proxies)

5. 确认PAT的权限范围

虽然你说浏览器能访问,但浏览器用的是你登录账号的权限,而PAT的权限可能不足。检查你的PAT是否包含了目标API所需的权限(比如读取文件的权限),可以在Azure DevOps的PAT管理页面重新编辑权限范围。

按照上面的步骤排查,尤其是前两点,应该能解决203的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 18:50:29