Как правильно побороть CORS?

Есть два приложения: клиент на vue.js и бэкенд на laravel. Работают на одной машине и разведены по разным доменам, бэкенд крутистя на client.my (openserver), а клиент на localhost:9000 (nodejs)
На серверной части стоит middlewere, которое для всех апи запросов разрешает кроссдоменные запросы.
public function handle($request, Closure $next)
  {
    \Debugbar::disable();
    header('Access-Control-Allow-Origin: *');
    return $next($request);
  }

В клиентской части отправляю запрос на api/cart/contacts с помощью vue-resource (экшон в vuex)
addContacts ({ commit, state }, contacts) {
    Vue.http.options.emulateJSON = true
    Vue.http.options.emulateHTTP = true
    let data = JSON.stringify(contacts)
    Vue.http.post('http://client.my/api/cart/add_contacts', {contacts: data}).then(response => {
      console.log(123)
    }, response => {
      // error callback
    })
  },

Все ок - данные отправляются и промис отрабатывает, но после отправляю запрос на api/cart/complete
completeOrder ({ commit }) {
    /*
      Отпрвляем завершенный заказ на сервер
    */
    Vue.http.options.emulateJSON = true
    Vue.http.options.emulateHTTP = true
    Vue.http.post('http://client.my/api/cart/complete').then(response => {
     // Очистка корзины
      commit('set', { type: 'cart', items: [] })
    }, response => {
      // error callback
    })
  },

Вылезает ошибка
Failed to load client.my/api/cart/complete: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'localhost:9000' is therefore not allowed access.


Оба метода (и contacts и complete) ничего не возвращают и отрабатывают без ошибок 100% Пробовал просто пустыми их оставлять, всервано первый проходит нормально, второй разворачивает.

Клиент
https://github.com/slowdream/client_vue/tree/master/src
Бэкенд
https://github.com/slowdream/client
  • Вопрос задан
  • 1297 просмотров
Решения вопроса 1
slowdream
@slowdream Автор вопроса
Мда... просто POST запрос vue-resource отправить не хочет, а вот если указать
Vue.http.post('http://client.my/api/cart/complete',{})

То все отрабатывает как надо.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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