@levchak0910
answer.correct ? press({correct: true}) : next()

Почему отправляет OPTIONS, хотя я выполняю POST запрос?

Я пытаюсь отправить POST запрос, но на сервер приходит OPTIONS
Это происходит только тогда, когда используется экземпляр axios и вызывается в хранилище vuex. Если использовать в компоненте то все ок.
Если использовать Axios напрямую, тоже все хорошо, но в нем нету baseURL. Мелочь, а неприятно.
Vue на 8080 порте, Node на 3000.
main.js
import Vue from 'vue';
import Axios from 'axios';
import VueAxios from 'vue-axios';
const axios = Axios.create({baseURL: 'http://localhost:3000'});
Vue.use(VueAxios, axios);

import {store} from "./store/";

new Vue({
    ...
    store,
    ...
});

store/index.js
import Vue from "vue";
import Vuex from "vuex";

Vue.use(Vuex);

export const store = new Vuex.Store({
    ...
    actions: {
        load({commit, getters}) {
            Vue.axios.post("/someurl", {
                data: "some data"
            });
        }
    }
});

5abbf07f619fd095150782.png
----------------------
Сам запутался и ввел в заблуждение других.
Из компонента не работает, и не в инстансe проблема
Может проблема в CORS как писал RidgeA, но не понимаю чего GET пропускает нормально, а POST/PUT нет
Код на github
----------------------
Все таки CORS
Отправлял через fetch POST запрос, произошло тоже самое, POST превратило в OPTIONS.
Попробовал fetch с параметром mode: "no-cors", отправилось, но данные все равно не передало.
Собрал билд отдал через koa-static и все заработало как и должно быть.
  • Вопрос задан
  • 2452 просмотра
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 1
@pantagruel964
Вы сами и ответили на свой вопрос. Раз проблема с новым экземпляром, то и не создавайте его - пользуйтесь существующим.

// app.js

import Vue from 'vue'
import axios from 'axios'

Vue.prototype.$http = axios.create({baseURL: 'http://localhost:3000'});

Вызывая действие vuex просто передаем экземпляр vue
// Component.js

...
methods: {
    this.$store.dispatch('myAction', { self: this });
}
...

И используем
// store.js

export const actions = {
    myAction({commit}, {self}){
        self.$http.post('url', {
            data: []
        })
    }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы