Vue + Laravel Sanctum遇到CSRF令牌不匹配的419错误
P粉237029457
P粉237029457 2023-08-24 22:17:54
[Vue.js讨论组]
<p>我收到一个“419(未知状态)”错误,错误信息为“CSRF令牌不匹配。”</p> <p>POST http://127.0.0.1:8000/login 419(未知状态)</p> <p>CSRF令牌不匹配。</p> <p>Laravel服务器:http://127.0.0.1:8000</p> <p>Vue服务器:http://localhost:8080</p> <p>应用程序/Http/Kernel.php</p> <pre class="lang-php prettyprint-override"><code>'api' =&gt; [ \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, 'throttle:api', \Illuminate\Routing\Middleware\SubstituteBindings::class, ], </code></pre> <p>应用程序/模型/User.php</p> <pre class="lang-php prettyprint-override"><code>&lt;?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Notifications\Notifiable; use Laravel\Sanctum\HasApiTokens; class User extends Authenticatable { use HasApiTokens, HasFactory, Notifiable; //... } </code></pre> <p>配置/cors.php</p> <pre class="lang-php prettyprint-override"><code>&lt;?php return [ 'paths' =&gt; [ 'api/*', 'sanctum/csrf-cookie', 'register', 'login', ], 'allowed_methods' =&gt; ['*'], 'allowed_origins' =&gt; ['*'], 'allowed_origins_patterns' =&gt; [], 'allowed_headers' =&gt; ['*'], 'exposed_headers' =&gt; [], 'max_age' =&gt; 0, 'supports_credentials' =&gt; true, ]; </code></pre> <p>.env</p> <pre class="brush:php;toolbar:false;">SESSION_DRIVER=cookie SESSION_DOMAIN=localhost SANCTUM_STATEFUL_DOMAINS=localhost:8080</pre> <p>src/main.js</p> <pre class="lang-js prettyprint-override"><code>axios.interceptors.request.use((config) =&gt; { config.baseURL = 'http://127.0.0.1:8000' config.withCredentials = true return config }) </code></pre> <p>src/views/auth/Login.vue</p> <pre class="lang-js prettyprint-override"><code>import axios from 'axios' import { reactive } from '@vue/reactivity'; export default { setup() { const credential = reactive({ email: '', password: '', }) const login = async () =&gt; { axios.get('/sanctum/csrf-cookie').then( async () =&gt; { let response = await axios.post('/login', credential) console.log(response); }); } return { login, credential } } }; </code></pre></p>
P粉237029457
P粉237029457

全部回复(2)
P粉073857911

我在处理这个相同问题上遇到了困难。经过几次搜索,我找到了这个页面。在看到可能的建议解决方案后,我修改了

SANCTUM_STATEFUL_DOMAINS=localhost:8080

SANCTUM_STATEFUL_DOMAINS=http://localhost:8080

然后就好了!它正常工作了!!

P粉908643611

您将SANCTUM_STATEFUL_DOMAINS设置为localhost:8080,但其余代码显示您正在使用8000端口而不是8080端口。如果您将其更改为8000,您应该是正常的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号