在 Laravel 5.5 上使用 axios 发布请求
Posted
技术标签:
【中文标题】在 Laravel 5.5 上使用 axios 发布请求【英文标题】:post request using axios on Laravel 5.5 【发布时间】:2018-02-15 12:30:06 【问题描述】:我正在尝试使用 axios 和最新的 Laravel 5.5 版发出一些请求 配置 X-CSRF 字段和所有 我的代码很简单:
axios.post('/post-contact',name:'Kamal Abounaim')
.then((response)=>
console.log(response)
).catch((error)=>
console.log(error.response.data)
)
但我收到此错误:419(未知状态) 应该是什么问题 谢谢回复
【问题讨论】:
这是在您在页面上停留一段时间后发生的,还是在页面加载后立即发生的?您的控制台中是否还有其他错误? 抱歉没有说这个评论,不,如果我尝试使用 axios.get 它没有错误,但没有发布我创建一个简单的表单并尝试发布,它可以工作 如果您检查浏览器中的网络选项卡,它肯定包括请求中的X-XSRF
或X-CSRF
标头或正文中的_token
?]
我检查它仍然无法正常工作
选择正确答案是有礼貌的。 @KamalL'azz
【参考方案1】:
这是由于 csrf 令牌而发生的。只需在 <head>
中添加带有 csrf-token 的元标记,然后像这样将该标记添加到 axios 标头。
// in the <head>
<meta name="csrf-token" content=" csrf_token() ">
<script type="text/javascript">
// For adding the token to axios header (add this only one time).
var token = document.head.querySelector('meta[name="csrf-token"]');
window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
// send contact form data.
axios.post('/post-contact',name:'Kamal Abounaim'
).then((response)=>
console.log(response)
).catch((error)=>
console.log(error.response.data)
);
</script>
【讨论】:
【参考方案2】:A 419 error seems to be Authentification Timeout。您的代码对我来说看起来不错,所以似乎错误与 post-contact
端点有关?尝试使用postman.之类的工具单独测试该端点
【讨论】:
谢谢兄弟,但在以前的版本中它是好的 5.5 需要新工具或者我不明白 嗯,很奇怪,不确定。希望其他人可以在这里筹码。我使用 Laravel 但尚未升级到 5.5。 是的,如果你这么说,我讨厌那些情况:( 只有当你忘记了 CSRF 令牌时,Laravel 才会抛出这个错误。以上是关于在 Laravel 5.5 上使用 axios 发布请求的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.5 Axios POST 导致 419 错误
Laravel 从 5.5 升级到 5.6 到 5.7:未捕获 ReferenceError: axios is not defined
laravel 5.5 elasticsearch/elasticsearch 插件安装及使用