Vue.js, Axios множественные запросы CORS на API Laravel случайно сбиваются - PullRequest
0 голосов
/ 02 сентября 2018

У меня проблема: на компоненте жизненного цикла, созданном компонентом Vue, я делаю 2 запроса CORS через Axios на внешний API-интерфейс Laravel. Если я делаю только один из запросов, все в порядке, и он работает 100% времени. Но если я делаю 2 или более запросов, я иногда получаю ошибочные запросы на вкладке сети. Очевидно, я делаю что-то не так с Аксиосом. Можете ли вы помочь мне.

Это хук, созданный моим компонентом - я вызываю действия VueX.

created () {
    this.$store.dispatch('getPets');
    this.$store.dispatch('getSpecies');
},

А это мои действия в магазине VueX

actions: {
    getPets(context) {
        return new Promise((resolve, reject) => {
            axios.get('api/pets')
                .then(response => {
                    context.commit('SET_PETS', response.data);
                    context.commit('SET_SELECTED_PET', response.data.data[0]);

                    resolve(response);
                })
                .catch(error => {
                    reject(error);
                });
        });
    },
    getSpecies(context) {
        return new Promise((resolve, reject) => {
            axios.get('api/species')
                .then(response => {
                    context.commit('SET_SPECIES', response.data);
                    resolve(response);
                })
                .catch(error => {
                    reject(error);
                });
        });
    },
    setSelectedPet(context, pet) {
        context.commit('SET_SELECTED_PET', pet);
    },
}

Тогда я получаю ошибочные запросы случайным образом - иногда оба запроса в порядке (состояние 200), в другой раз один из них терпит неудачу ... Запросы

Запрос не выполнен - ​​ответа нет, я думаю, что запрос вообще не переходит в Laravel API. Журналы Laravel тоже пусты.

Я думаю, что я делаю что-то не так с Axios, потому что это не из моего браузера или брандмауэра - я остановил брандмауэр и протестировал его в инкогнито и других браузерах без каких-либо расширений. Любая помощь будет оценена.

Это заголовки Axios, которые я установил в основном файле js.

// Set axios to call the backend API and set its headers on every page reload
window.axios = require('axios');
window.axios.defaults.baseURL = 'http://api.aaa';
window.axios.defaults.timeout = 30000;
window.axios.defaults.headers.common = {
    'X-Requested-With': 'XMLHttpRequest',
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Authorization': 'Bearer '+getToken(),
};

1 Ответ

0 голосов
/ 04 сентября 2018

Хорошо, через некоторое время я наконец понял это. Это был PHP opCache, который вызывал такое поведение. Если у вас есть похожая проблема, просто отключите opChache.

Кстати, можете ли вы дать мне свои мысли о том, что может вызвать такое поведение от Laravel, потому что я не хочу потерять opCache в качестве опции для подобных проектов Laravel?

...