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

使用httpx发送POST请求返回401错误,但requests请求正常,求排查

问题分析与修复方案

核心错误点

  • 认证逻辑缺失
    requests代码通过HTTPBasicAuth传递了用户名(USER)和密码(PASSWORD)完成Basic认证,但你的httpx代码仅将client_id放在data参数中,完全没有实现Basic认证逻辑,这是401未授权错误的主要原因。

  • 客户端证书参数误用
    httpx中verify参数用于验证服务器的SSL证书,而客户端证书需要通过cert参数传递,你把自定义SSL上下文传给verify的做法不符合httpx的参数规范。

  • 证书文件不一致
    注意到requests使用的是key2.pem,但httpx用的是key.pem,如果这两个密钥文件内容不同,也会导致客户端证书验证失败,需确认文件一致性。

修复后的httpx代码

import os
import httpx
from httpx import HTTPBasicAuth

cert = os.path.realpath('./certs/certificate.pem')
# 统一密钥文件,与requests使用的key2.pem保持一致
key = os.path.realpath('./certs/key2.pem')

response = httpx.post(
    url=my_url,
    data={'client_id': os.getenv('USER', '')},
    # 正确传递客户端证书
    cert=(cert, key),
    # 添加Basic认证
    auth=HTTPBasicAuth(os.getenv('USER', ''), os.getenv('PASSWORD', ''))
)

token = response.json()['access_token']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 02:27:07