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

使用Python Requests调用WordPress REST API时出现404错误求助

WordPress REST API 请求404问题(Python Requests vs curl/浏览器)

以下是几种常见的排查和解决思路:

1. 缺失请求头触发拦截/重定向

大部分WordPress站点会校验请求的User-Agent,curl和浏览器会自动带上符合浏览器规范的请求头,但Python Requests默认的User-Agent标识为python-requests/x.x.x,容易被服务器拦截或触发错误重定向(跳转到首页导致404)。

解决方法:手动添加浏览器风格的请求头

import requests

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}
r = requests.get('https://myWebsiteDomain.com/blog/wp-json/wp/v2/categories', headers=headers)
print(r.status_code)

2. URL路径或服务器重写规则问题

部分站点的permalink设置、Nginx/Apache重写规则可能导致Requests请求无法正确解析API路径。

解决方法:

  • 确保URL和浏览器中使用的完全一致(注意大小写,部分服务器区分路径大小写)
  • 尝试在URL末尾添加斜杠:https://myWebsiteDomain.com/blog/wp-json/wp/v2/categories/
  • 检查站点permalink设置是否为「文章名称」或其他非默认格式(纯静态格式可能影响REST API路径识别)

3. CDN或缓存插件拦截

如果站点使用了CDN(如Cloudflare)或缓存插件,可能对不同来源的请求返回不同结果——curl和浏览器可能命中缓存,而Requests的请求被CDN拦截或缓存未命中。

解决方法:

  • 添加Cache-Control头强制跳过缓存:
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
        'Cache-Control': 'no-cache'
    }
    
  • 检查CDN规则,确认是否对python-requests这类User-Agent做了拦截或重定向

4. 会话Cookie验证问题

虽然多数REST API端点是公开的,但部分站点可能要求登录权限,或依赖特定会话Cookie。浏览器和curl可能保存了登录后的Cookie,而Requests是全新会话,无相关Cookie导致404。

解决方法:

  • 先在浏览器退出登录后访问API URL,确认该端点是否真的公开可访问
  • 如果需要登录,使用Requests会话保持或手动添加登录Cookie:
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
        'Cookie': 'your_login_cookie_key=your_login_cookie_value'
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 15:52:13