Vue.js 如何在VueJs中从AdonisJs获取CSRF令牌?
我在一个项目中使用AdonisJS制作的API和VueJS制作的前端 API和前端是独立的,前端通过axios调用使用API 我试图从前端使用axios发出POST请求,但由于缺少csrf令牌,请求发送403响应 在带有Edge模板的“经典”Adonis项目中,我知道如何使用Vue.js 如何在VueJs中从AdonisJs获取CSRF令牌?,vue.js,csrf,adonis.js,Vue.js,Csrf,Adonis.js,我在一个项目中使用AdonisJS制作的API和VueJS制作的前端 API和前端是独立的,前端通过axios调用使用API 我试图从前端使用axios发出POST请求,但由于缺少csrf令牌,请求发送403响应 在带有Edge模板的“经典”Adonis项目中,我知道如何使用{{csrfField()}}获取csrf令牌。 但是,在前端与API无关的情况下,如何实现这一点 我尝试创建一个路由/csrf,从会话发送令牌: 异步csrf({response,session}){ 返回response
{{csrfField()}}
获取csrf令牌。
但是,在前端与API无关的情况下,如何实现这一点
我尝试创建一个路由/csrf
,从会话发送令牌:
异步csrf({response,session}){
返回response.json({token:session.get('csrf-secret')})
}
然后在Vue中,我进行了第一次axios调用,以从该路由获取令牌,然后将令牌传递给第二次axios post调用
但是这个解决方案不起作用(我想因为它不是同一个会话,所以,不是同一个令牌),顺便说一下,我发现这个方法不是很干净
那么,有人知道如何做到这一点吗?我不知道阿多尼斯,但由于阿多尼斯与拉威尔相似,你可以用他们的方式来做。在Laravel上有用于web和api的路由文件。Web需要csrf_标记,而API不需要,因此基本上您将把路由放在API上,但不会有会话等。另一个选项是在包含vuejs组件的布局文件上设置一个全局
窗口。\u csrf={{csrf_标记()}
不确定如何在adonis上执行此操作。然后,您将从vuejs上的窗口对象获取它<代码>窗口。谢谢您的回答。由于Adonis和Vue是完全独立的,我不确定带有窗口的第二个解决方案是否可行。但我将尝试使用不受csrf限制的API路由的解决方案!它将工作,窗口对象是全局的,您可以在任何地方访问它