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

Python requests调用REST API传凭证报401认证失败如何解决

问题根因

报错是Python字符串转义规则破坏了域账号格式的用户名导致的。
代码中写的用户名'cormama.remote\jamal'里,\是Python默认的字符串转义起始符,虽然\j不属于Python内置的标准转义序列,但requests库构造Basic认证请求头、对用户名做Base64编码时,这个未正确转义的反斜杠会被错误解析,最终发给服务端的用户名不是预期的cormama.remote\jamal,服务端校验凭证不通过就返回401。
DOS下curl调用能正常访问,是因为cmd环境下用双引号包裹参数时,反斜杠不会被默认转义,传给服务端的账号名完整正确,所以认证成功。

修复方案

按顺序操作即可:

  • 给用户名字符串加r前缀,声明为Python原生字符串,强制Python不解析字符串内的转义序列,完整保留反斜杠字符。
  • 显式导入HTTPBasicAuth类指定认证方式,避免requests自动探测认证类型时出现匹配偏差。
  • 若仍报错,手动添加Accept: application/json请求头,匹配API的格式校验要求。

修正后的完整代码:

import requests as re
from requests.auth import HTTPBasicAuth
re.packages.urllib3.disable_warnings()

url = 'https://nwsppl300p:9090/nwrestapi/v3/global/clients/?q=hostname:BMCJCA001T.corpads.local'
auth = HTTPBasicAuth(r'cormama.remote\jamal', 'Inventigation100get$pump')
headers = {"Accept": "application/json"}

r = re.get(url, auth=auth, verify=False, headers=headers)
print(r.content)

注意:密码里的$符号在Python单引号包裹的普通字符串中不会被转义,不需要额外修改,只要正确处理用户名的反斜杠就能解决绝大多数同类报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:09:18