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

使用Python Requests调用API时,含空格的API Key导致403认证错误求助

Python requests POST JSON时403认证错误的解决办法

你的问题和API Key里的空格完全没关系,是两个低级错误导致的:

问题根源

  1. Headers语法错误:你写的headers字典里,"content-type":"application/json少了结尾的双引号,这会直接导致headers构造失败,Authorization头根本没被正确发送到服务器,所以返回"未提供认证信息"的403。
  2. 数据格式与Content-Type不匹配:你指定了Content-Type: application/json,但传入的data是form表单格式的字符串,服务器无法解析这种格式的请求体,雪上加霜。

正确代码写法

最简单的方式是用requests的json参数传递数据,它会自动帮你序列化JSON并设置正确的Content-Type头:

import requests

url = "https://myurlhere.com/api/status/"
headers = {"Authorization": "Token d6bf96a81a58bf6e99ad1f819b244242797c0c07"}
data = {"status": "Good", "value": "foobar"}

response = requests.post(url, headers=headers, json=data)
# 可选:打印响应信息排查问题
print(response.status_code)
print(response.text)

如果非要手动设置Content-Type头,也可以这么写(需要手动序列化JSON):

import requests
import json

url = "https://myurlhere.com/api/status/"
headers = {
    "Authorization": "Token d6bf96a81a58bf6e99ad1f819b244242797c0c07",
    "Content-Type": "application/json"
}
data = {"status": "Good", "value": "foobar"}

response = requests.post(url, headers=headers, data=json.dumps(data))

关键说明

  • Token后面的空格是标准的HTTP认证头格式,完全合法,不是问题所在。
  • 403的核心原因是headers语法错误导致认证头未正确发送,加上数据格式与声明的Content-Type不匹配,双重错误触发了服务器的拒绝响应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 11:21:07