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

React调用API报No application encryption key错误但PostMan正常如何解决

这个错误是后端服务(绝大多数情况下为Laravel框架服务)抛出的异常,和React前端基础请求逻辑无关,PostMan可正常请求、前端请求报错的常见原因和对应解决方法如下:

问题原因
  • 后端本身缺失加密密钥配置:Laravel框架需要APP_KEY用于数据加密解密,若后端.env文件未配置该值会抛出此错误。PostMan能正常返回可能是请求命中了后端缓存、或者PostMan自动携带了白名单鉴权信息绕过了密钥校验
  • 跨域预检请求被拦截:React前端跨域发起POST请求时,浏览器会自动先发送OPTIONS类型的预检请求,该请求不会携带自定义请求头,后端若未对预检请求做特殊放行,会在校验加密逻辑时直接抛出异常。PostMan不会自动发送预检请求,因此可以正常拿到响应
  • 请求缺少加密校验字段:后端接口要求请求必须携带约定好的加密校验头/参数,PostMan请求时默认携带了该字段,但前端fetch代码未配置对应内容,导致校验失败报错
解决办法

后端侧操作(优先排查)

  • 检查Laravel项目根目录的.env文件,确认是否存在APP_KEY配置项,若不存在执行命令php artisan key:generate生成密钥,生成后重启后端服务即可
  • 为OPTIONS类型的请求添加放行规则,无需校验加密参数直接返回200状态码
  • 若接口要求携带加密校验字段,明确同步字段名和加密规则给前端

前端侧操作

  • 对比PostMan完整请求头、请求参数和前端fetch配置,将缺失的加密校验字段补入请求配置,示例如下:
fetch(URL, {
  method: 'post',
  headers: {
    Accept: 'application/json',
    'Content-Type': 'application/x-www-form-urlencoded',
    'Content-Language': 'en',
    // 补充后端要求的加密校验头,示例为X-App-Key,实际字段名以后端要求为准
    'X-App-Key': '后端约定的加密校验值'
  },
  body: formUrlEncoded(data),
})
  • 临时本地调试可以配置请求代理,避免触发跨域预检:Vite项目在vite.config.js中配置proxy字段,Webpack项目在setupProxy.js中配置转发规则即可

内容的提问来源于stack exchange,提问作者alejandro pereira ALEW140

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:18:01