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

VueJs调用Laravel Api出现Trying to access array offset on value of type null

问题解决方案

以下是针对该场景的排查和解决方法,按优先级依次尝试:

1. 修正路由配置

Laravel 的 web.php 路由默认携带 CSRF 验证中间件,仅适用于同站页面请求,接口类请求必须放置在 routes/api.php 文件中:

  • 确认你的 /api/user/store 对应路由写在 api.php 内,该文件下的路由默认跳过 CSRF 校验,适配前后端分离的接口调用场景
  • 如果确实需要放在 web.php 中,需要在 app/Http/Middleware/VerifyCsrfToken.php 的 $except 数组中添加该路由地址,跳过CSRF校验

2. 配置axios请求头

添加必要的请求头确保Laravel能正确识别JSON格式的请求参数,你可以在Vue项目的main.js中添加全局配置:

import axios from 'axios'
// 标识为Ajax请求
axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'
// 指定POST请求参数为JSON格式
axios.defaults.headers.post['Content-Type'] = 'application/json'
// 挂到Vue原型方便全局调用
app.config.globalProperties.$axios = axios

3. 校验后端参数接收逻辑

Laravel 无法通过原生$_POST获取JSON格式的请求参数,必须通过Request对象接收:

// 控制器方法示例
use Illuminate\Http\Request;

public function store(Request $request)
{
    // 可先打印确认参数是否正常传入
    // dd($request->all());
    $validated = $request->validate([
        'name' => 'required|string|max:255',
        'email' => 'required|email|unique:users',
        'password' => 'required|min:6'
    ]);
    // 执行用户创建逻辑
}

4. 配置跨域规则(前后端端口/域名不一致时适用)

如果你的前端运行地址和后端接口地址域名/端口不一致,需要配置Laravel跨域:

  • 打开config/cors.php,修改paths项为['api/*'],允许所有api路由跨域
  • 修改allowed_origins项为你的前端地址(开发环境可临时设为*)
  • 执行php artisan config:clear清除配置缓存生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:48:05