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

本地网站Fetch调用WordPress旧版JSON API失败原因排查

问题:本地Fetch调用WordPress旧版JSON API失败(v2正常)

本地网站通过Fetch调用WordPress的JSON API v2时完全正常,但调用旧版JSON API时提示无法获取数据(直接在浏览器访问该接口无问题)。

正常调用v2 API的代码

fetch('https://example.com/wp-json/wp/v2/pages/', { method: 'GET', headers: { 'content-type': 'application/json' } } )

调用旧版API的代码(无法获取数据)

fetch('https://example.com/?json=get_page_index&custom_fields=*&dev=1&count=800', { method: 'GET', headers: { 'content-type': 'plain/text' } } )

网络调试面板显示的信息

provisional headers are shown Learn more
application/json: application/json
DNT: 1
Referrer: http://localhost:8080/
User-Agent: Mozilla/5.0 (iPad; CPU OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/87.0.4280.7

可能的原因分析

  • 请求头冗余设置:GET请求不需要手动设置content-type头,旧版API可能对这个额外的头不兼容。浏览器直接访问时不会携带该头,Fetch添加后可能触发服务器的解析逻辑错误或验证拦截。
  • CORS配置差异:虽然v2 API支持跨域,但旧版API可能未正确配置CORS响应头。浏览器直接访问不触发跨域检查,而Fetch跨域请求会严格校验Access-Control-Allow-Origin等字段,若服务器未返回这些头,请求会被浏览器拦截。
  • 服务器端的Referrer/UA限制:服务器可能设置了规则,拦截来源为localhost:8080的请求,或者对特定UA做了限制。可以尝试移除Referrer头,或者调整UA后再测试。
  • 旧版API参数兼容性:旧版API对custom_fields=*或count=800的参数处理可能存在问题,虽然浏览器访问正常,但Fetch请求的参数解析方式可能触发服务器的异常逻辑(不过这个可能性较低,因为浏览器访问没问题)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:45:34