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

React Native调用WordPress JWT Auth报错 Postman正常如何解决

问题根因

现有React代码中的Axios请求写法不符合JWT Auth插件的接口要求,和Postman发出的正常请求结构不一致,最终触发jwt_auth_no_auth_header报错,具体问题点:

  • Axios的post方法第二个参数会直接作为请求体发送,现有代码额外包裹了body属性、还手动执行了JSON序列化操作,最终发出的请求体是无效嵌套结构{"body":"{\"username\":\"xxx\",\"password\":\"xxx\"}"},插件无法从请求根节点读取到用户名、密码参数
  • 未显式声明请求头Content-Type: application/json,部分React Native运行环境下Axios会默认使用application/x-www-form-urlencoded格式发送请求,插件解析JSON参数失败就会抛出无鉴权头的错误。Postman发送请求时会自动匹配参数对应的Content-Type,参数也直接放在请求根节点,所以能正常返回jwt_auth_valid_credential结果。

注意:不要把fetch API的传参逻辑直接套用到Axios上,二者的请求体传参规则有明显区别。

修复方法

调整submitLogin函数内的请求逻辑,去掉多余的body层级包裹和手动JSON序列化操作,显式声明正确的请求头即可,修正后的代码片段:

function submitLogin() {
    axios.post(
        apiurl,
        // 直接传入用户名密码对象,Axios会自动完成JSON序列化
        { username: username, password: password },
        {
            headers: {
                "Content-Type": "application/json"
            }
        }
    )
    .then(function(response) {
        console.log('接口返回:', response.data)
        // 拿到有效token后可存入本地持久化存储,后续需要鉴权的接口请求,将token放到Authorization请求头中即可完成身份校验
    })
    .catch(function(err) {
        console.log('请求错误:', err.response?.data || err.message)
    })
}
排查补充

修复后可通过抓包对比端上请求和Postman请求的结构,确认参数直接放在请求体根节点、无嵌套body字段即可正常调用。如果修复后Postman仍可正常调用但端上持续报错,再排查站点伪静态规则是否过滤了Authorization头即可,当前场景下无需优先排查该配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 20:06:26