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

为何WordPress POST请求自定义头验证失败,auth参数却生效?

WordPress REST API 认证问题:自定义Header vs Auth参数差异解析

问题根源

WordPress的Application Passwords插件仅支持HTTP Basic认证协议,不识别你自定义的user/password请求头。

当你使用requests.post的auth=(username, password)参数时,requests库会自动完成以下合规操作:

  • 将用户名:密码拼接成字符串
  • 对该字符串进行Base64编码
  • 生成规范的Authorization: Basic <编码后的字符串>请求头

而你手动定义的{"user": username, "password": password}请求头,WordPress REST API完全无法解析,因此返回401 rest_cannot_edit权限错误。

正确的自定义Header写法(若需手动构造)

如果不想用auth参数,必须严格遵循Basic Auth规范构造请求头:

import requests
import base64

url = "https://dca-mx.com/wp-json/wp/v2/pages/362"
username = 'Fabian'
password = 'XXXX XXXX XXXX XXXX XXXX'

data = {
    'title': 'DCA DB',
    'content': 'HELLO FROM PYTHON.',
    'status': 'publish'
}

# 构造符合规范的Basic Auth认证头
auth_str = f"{username}:{password}"
b64_auth = base64.b64encode(auth_str.encode('utf-8')).decode('utf-8')
headers = {"Authorization": f"Basic {b64_auth}"}

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

# 响应检查
if response.status_code == 201:
    print('Post created successfully')
elif response.status_code == 200:
    print('Posteado Correctamente!')
else:
    print(response.text)

额外建议

直接使用requests的auth参数是最优方案:

  • 自动处理编码和请求头构造,避免手动编码出错
  • 代码更简洁易读,维护成本更低

内容的提问来源于stack exchange,提问作者Fabián Gabriel L.S.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:57:32