Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js 如何在VueJs中从AdonisJs获取CSRF令牌?_Vue.js_Csrf_Adonis.js - Fatal编程技术网

Vue.js 如何在VueJs中从AdonisJs获取CSRF令牌?

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

我在一个项目中使用AdonisJS制作的API和VueJS制作的前端

API和前端是独立的,前端通过axios调用使用API

我试图从前端使用axios发出POST请求,但由于缺少csrf令牌,请求发送403响应

在带有Edge模板的“经典”Adonis项目中,我知道如何使用
{{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路由的解决方案!它将工作,窗口对象是全局的,您可以在任何地方访问它