前端怎么正确发送 CSRF Token 到后端?
我在用 Axios 发请求时,后端要求带 CSRF Token,但我试了几次都提示验证失败。我从页面 meta 标签里读取了 token,也加到 header 里了,但好像没生效?
这是我的代码:
const csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute('content');
axios.post('/api/submit', data, {
headers: {
'X-CSRF-TOKEN': csrfToken
}
});
后端是 Laravel,文档说要用这个 header 名,但还是报 419 错误,是不是哪里漏了?
1. 确保你的页面有这个 meta 标签,而且位置正确。
2. 检查一下你的 axios 请求是不是在同一个域名下,跨域的话可能会有问题。
3. 最后,确保你在请求头里加的 token 名字对了,Laravel 默认的是 'X-CSRF-TOKEN',你这里是对的。
不过有时候可能还是不行,可以试试这样全局设置一次:
然后你的请求就不用每次都设置了。拿去改改,应该就能解决了。