Axios 419(未知状态)Laravel API CSRF令牌已更改

时间:2019-10-01 15:21:32

标签: javascript ajax laravel debugging axios

当我使用Axios请求Laravel后端并获取数据并请求另一个API来获取某些数据时,我遇到了错误,虽然运行良好,但是在API返回数据之后,我请求了laravel后端存储数据。它返回一个带有

的响应
  

app.js:360 POST http://technotrace.tech/session-adding-api 419(未知状态)

我已经尝试检查我的PHP后端,并且只有在禁用VerifyCSRFToken中间件组时,此操作才会停止。

但是出于安全原因,我还是需要检查CSRF令牌。

我能够理解为什么csrf令牌在发送请求时被更改。

如果我只是将请求发送到laravel后端,那么一切正常,但是当我请求另一个api时,问题就出在将请求发送到我的后端。

function addSession(url, formdata) {

    //Add Session
    axios.post(url, formdata)
        .then(res => {
            console.log(res)

            var data = res.data;

            if ((data.session_info != null && data.session_info != {})) {
                console.log(data.session_info);
            }

        })
        .catch(err => {

            console.error(err);
        })

}

function getApiDetails() {

    //Start getting api details
    axios.get('https://ipapi.co/json/').then(res => {

            console.log(res)
            var csrf = jr('meta[name="csrf-token"]').get(0).content;
            var ses_id = jr('meta[name="verify-token"]').get(0).content;
            var cur_url = jr('link[rel="canonical"]').get(0).href;

            // console.log(csrf, ses_id, cur_url);

            var url = '/session-adding-api';

            var formdata = new FormData();

            formdata.append('_token', csrf);
            formdata.append('session_token', ses_id);
            formdata.append('session_repeat', 0);
            formdata.append('current_url', cur_url);

            Object.entries(res.data).forEach(entry => {
                // console.log(entry[0], entry[1]);
                formdata.append(entry[0], entry[1]);

            });

            addSession(url, formdata);

        })
        .catch(err => {
            console.error(err);
        })

    //End getting api details

}

function matchSession() {

    //Match Session Start
    var csrf = jr('meta[name="csrf-token"]').get(0).content;
    var ses_id = jr('input[name="verify-token"]').get(0).content;

    var url = '/session-matching-api';

    var formdata = new FormData();

    formdata.append('_token', csrf);
    formdata.append('session_token', ses_id);

    axios.post(url, formdata)
        .then(res => {
            console.log(res)

            var data = res.data;

            if ((data.match != true)) {

                getApiDetails()

            }
        })
        .catch(err => {
            console.error(err);
        })
    //Match Session

}

matchSession();

0 个答案:

没有答案