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

Python调用WordPress REST API返回403错误排查求助

WordPress REST API调用返回403错误解决方案

问题描述

编写Python脚本通过REST API对接WordPress站点时,使用可正常登录后台的账号密码发起请求,始终返回403错误,原报错代码如下:

url = "https://prod-wp.xxxxxx.com/wp-json/wp/v2/posts"
user = "xxxxxx"
password = "xxxxxxxx"
credentials = user + ':' + password
token = base64.b64encode(credentials.encode())
header = {'Authorization': 'Basic ' + token.decode('utf-8')}
response = requests.get(url , headers=header)
print(response)

返回结果:<Response [403]>

问题原因

  • 原代码使用的HTTP Basic Auth认证方式未被WordPress默认支持,服务端默认无对应校验逻辑,无法识别该类认证请求
  • 站点的安全插件、Web服务器(Nginx/Apache)配置常默认拦截Basic Auth的Authorization请求头,导致认证信息无法传递到WordPress内核完成校验

可行解决方案

通过JWT认证方式发起请求,前提是WordPress服务端已安装启用JWT认证插件完成基础配置,可行代码如下:

import requests
import os
from dotenv import load_dotenv

load_dotenv()
BASE_URL = 'https://website.com/wp-json'
WP_URL = os.getenv("WP_URL")
WP_USERNAME = os.getenv("WP_USERNAME")
WP_PASSWORD = os.getenv("WP_PASSWORD")


def get_headers():
    wp_credentials = {'username': WP_USERNAME, 'password': WP_PASSWORD}
    jwt_response = requests.post(f'{BASE_URL}/jwt-auth/v1/token', json=wp_credentials)
    jwt_token = jwt_response.json()['token']
    headers = {
        "Authorization": "Bearer %s" % jwt_token,
        "Content-Type": "application/json",
        "Accept": "application/json",
    }
    print(f'Headers are equal to: {headers}')
    return headers


get_headers()

该方案先调用JWT令牌接口获取有效身份令牌,后续业务请求携带Bearer令牌即可正常通过服务端权限校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:48:03