首页 > 解决方案 > 我可以在非 SPA 项目上使用 Axios 吗?

问题描述

我厌倦了 ajax long 风格的发送请求,我在一个 SPA 项目中使用了 axios,它非常酷,我查看了你的文档以了解它是如何工作的并且效果很好,但是如果我尝试提出请求,它会拖未经身份验证的错误,我使用 Laravel php 框架作为我的代码后端,如果我尝试直接在 ajax 上运行它,它可以工作,或者它也可以正常工作。

另外,我在任何地方都没有任何身份验证中间设置。

这是库Axios 库的文档

这是我的示例代码

axios.get('/home', {} , {
            'X-CSRF-TOKEN'    : "{{csrf_token()}}",
            'X-Requested-With': 'XMLHttpRequest',
            'Accept' : 'application/json',
            'Content-Type' : 'application/x-www-form-urlencoded',
        })
            .then(function(ressponse){
                console.log(success);
            })
            .catch(function(error){
                console.log(error)
            })
 });

我只返回控制器中的所有请求而不是特殊的

所以我的问题是,它是 axios 还是 laravel 的问题,或者我不能在没有任何 SPA 框架(例如 react、vue 等)的情况下使用 axios。

谢谢你。

标签: javascriptlaravel

解决方案


它未经身份验证,因为您没有X-CSRF-TOKEN在标题中设置。

您正在X-CSRF-TOKEN配置对象上设置一个属性,但这没有意义。

axios.get('/home', {} , {
            headers: {
                'X-CSRF-TOKEN'    : "{{csrf_token()}}",
                // X-Requested-With is an ugly hack and you should use an Accept header instead of this (not as well as!)
                'X-Requested-With': 'XMLHttpRequest',
                'Accept' : 'application/json',
                // You're making a GET request. There is no request body to describe the content-type of.
                // 'Content-Type' : 'application/x-www-form-urlencoded',
            }
        })

推荐阅读