请教各位,这段 JS 代码是什么意思?

laravel版本号5.3

今天通过 php artisan make:auth命令创建了一个最小的用户注册登陆源码,它的前端页面里有这样一句话

    window.Laravel = {!! json_encode([
        'csrfToken' => csrf_token(),
    ]) !!};

这句话是什么意思?从缓存中取token?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 3

好吧,已经找到答案了,其实就是csrf-token标记,一般教程都是教你写在meta里,就像这样:
''
也可以直接写在js页面里,就像提问的那样。

8年前 评论
<meta name="csrf-token" content="{{ csrf_token() }}">
8年前 评论
json_encode([
        'csrfToken' => csrf_token(),
]) 

上面这行代码是执行的 php 语句,意思是在服务器上获取当前的 token,然后转化为json

window.Laravel =

这个赋值是把上面的 json 传给当前页面 window 对象,使 window 对象有一个 Laravel 属性。

为什么要给 window 对象这个属性呢?
因为这样就可以在 js 函数执行的时候,很方便取到 当前的 token 值,最常用的场景就是在发送 Ajax 请求的时候,需要在请求的 header 携带token值,就像下面这样

window.axios.defaults.headers.common = {
    'X-CSRF-TOKEN': window.Laravel.csrfToken,
    'X-Requested-With': 'XMLHttpRequest'
};

如果不这样做,想要发送 Ajax 请求的时候,可能会需要下面这样

Vue.http.headers.common['X-CSRF-TOKEN'] = document.querySelector('#token').getAttribute('value')
8年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!