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

Laravel中PATCH请求失效但POST请求正常的问题排查

Laravel中PATCH请求失效但POST请求正常的问题排查

嘿,我碰到好几个开发者朋友遇到过类似的情况,咱们一步步来揪出问题所在!

最可能的原因:CSRF令牌缺失

Laravel对所有非GET类型的请求(包括PATCH、POST、PUT等)都要求携带CSRF令牌做验证,这是框架的安全机制。你说POST请求正常,大概率是之前的POST请求里正确带了令牌,但这次的PATCH请求漏掉了。

看你的原生JS代码,你创建了FormData但没有加入CSRF令牌,这会导致请求被Laravel的VerifyCsrfToken中间件拦截,直接返回403错误。

解决方法很简单,把令牌加到FormData里就行:

document.getElementById('patates').addEventListener('click', function() {
    var formData = new FormData();
    formData.append('sayi', 123);
    // 加入CSRF令牌
    formData.append('_token', document.querySelector('meta[name="csrf-token"]').content);

    var url = `{{ route('magaza.urun.guncelle.submit', ['id' => 你的ID值]) }}`;
    // 确保请求方法设置为PATCH
    fetch(url, {
        method: 'PATCH',
        body: formData
    })
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error('Error:', error));
});

其他需要排查的点

  • 确认请求方法是否正确:检查你的JS代码里是不是真的把请求方法设置成了PATCH,有时候不小心写成POST或者配置错误,会导致请求走不到对应的路由。
  • 路由参数是否正确:你的路由需要{id}参数,确保拼接URL时传入了有效的ID值,避免因为路由不匹配导致请求没有到达控制器。
  • 中间件拦截:如果你的路由被自定义中间件保护,检查中间件是否对PATCH请求有额外的限制,比如权限验证之类的。

备注:内容来源于stack exchange,提问作者achilles

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 14:19:31