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

Python发送POST请求无法传递Content-Type头且返回内容为空如何解决

问题原因

你遇到的404错误核心是Python构造的请求和Insomnia成功请求的头信息不完全匹配,目标站点的Nginx配置对请求头校验较严格,缺失必要头或者头内容不符合要求就会直接返回404。
你手动指定Content-Type的操作本身没有问题,但只传这一个头无法匹配服务端的校验规则,且手动写头容易出现拼写、格式错误。

解决方案

步骤1:复制Insomnia成功请求的全量头信息

打开Insomnia里的成功请求,把Headers标签下所有非自动生成的头(包括User-Agent、Accept、Accept-Encoding等)全部复制,不要只传Content-Type。

步骤2:修改Python代码,不要手动指定Content-Type

requests库传入data参数时会自动生成正确的application/x-www-form-urlencoded头,无需手动声明,避免人为书写错误。修改后的参考代码如下:

import requests

payload = {'accountID': '20176429'}
# 替换成你从Insomnia复制的所有头信息
headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36",
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate, br",
    "Connection": "keep-alive"
}

response = requests.post(
    "https://www.simplicialsoftware.com/api/account/GetPlayerProfile",
    data=payload,
    headers=headers
)

print(response.status_code, response.reason)
print(response.text[:300] + '...')

可选验证步骤

如果修改后还是返回404,可以开启requests的debug日志,对比Python发出的请求和Insomnia请求的差异:

import logging
import http.client

http.client.HTTPConnection.debuglevel = 1
logging.basicConfig(level=logging.DEBUG)

运行后可以在控制台看到完整的请求头、请求体内容,和Insomnia的请求逐一比对即可定位差异。

极端情况排查

如果以上操作都无效,检查本地是否开启了全局代理,导致Python请求被代理拦截转发到了错误的节点;可以在请求中添加proxies={"http": None, "https": None}参数强制不走代理测试。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:48:02