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

Laravel 10中@csrf指令引发W3C验证错误的解决方法

解决Laravel 10中@csrf指令的W3C验证错误

问题原因

Laravel默认的@csrf指令会生成带autocomplete="off"属性的隐藏input,而W3C规范明确要求type="hidden"的input元素不能设置autocomplete为on或off,因此触发验证错误。

解决方案

1. 手动生成CSRF字段(最简单直接)

直接替换模板中的@csrf指令为手动编写的隐藏input,去掉autocomplete属性:

<input type="hidden" name="_token" value="{{ csrf_token() }}">

这样生成的HTML完全符合W3C标准,不会触发验证错误。

2. 自定义Blade指令替换默认@csrf

如果不想修改所有模板里的@csrf调用,可以在AppServiceProvider中自定义同名指令,覆盖默认行为:
打开app/Providers/AppServiceProvider.php,在boot方法中添加以下代码:

use Illuminate\Support\Facades\Blade;

public function boot()
{
    Blade::directive('csrf', function () {
        return '<input type="hidden" name="_token" value="' . csrf_token() . '">';
    });
}

之后模板中使用@csrf时,就会生成不带autocomplete属性的正确HTML,无需逐个修改模板文件。

3. 利用Laravel表单辅助函数(可选)

也可以使用Laravel的表单辅助函数生成CSRF字段:

{{ form_field('_token', 'hidden', ['value' => csrf_token()]) }}

注:此方法需确保表单辅助函数已启用,相对前两种方法使用较少。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:37:06