Неожиданное соединение закрыто по запросу GET - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть узел js api, размещенный на heroku, и два других приложения vue-js, связанных с API. Первое приложение vue js работает отлично. Второй реагирует странно. Два первых запроса (войдите в систему и получите список пользователей) работают нормально, но, что бы я ни пытался сделать, даже при запросе того же списка пользователей, соединение теряется и регистрируется проблема CORS.

URL-адрес этих двух приложений находится в allowedOrigins заголовках API, и он прекрасно работает локально.

Вот HTTP-ответ, когда я пытаюсь получить список пользователей во второй раз или любой другой запрос:

Connection  close
Content-Length  0
Date    Thu, 18 Apr 2019 19:25:08 GMT
Server  Cowboy

и вот логи моего сервера:

info heroku router req=0e6f8359… at=info method=OPTIONS path="/api/v1/admin/get-all-users" host=domain.herokuapp.com request_id=0e6f8359-0f78-4b42-995d-fe34a6b6c658 fwd="XX.XXX.XXX.XXX" dyno=web.1 connect=0ms service=3ms status=200 bytes=540 protocol=https
info heroku router req=8dd33943… at=info method=GET path="/api/v1/admin/get-all-users" host=domain.herokuapp.com request_id=8dd33943-4e34-4774-b0ec-0f2f893934cb fwd="XX.XXX.XXX.XXX" dyno=web.1 connect=0ms service=39ms status=200 bytes=10915 protocol=https
info heroku router req=cc73307c… at=info method=OPTIONS path="/api/v1/admin/get-all-users" host=domain.herokuapp.com request_id=cc73307c-18c5-45b9-844c-08e63d1f7ae6 fwd="XX.XXX.XXX.XXX" dyno=web.1 connect=0ms service=3ms status=200 bytes=538 protocol=https

Кажется, это не ошибка кода. Я понятия не имею, откуда это может прийти, поэтому я прошу о помощи. Спасибо!

Ответы [ 2 ]

0 голосов
/ 19 апреля 2019

Я нашел способ исправить эту проблему. Я использовал уникальный и глобальный экземпляр axios, импортированный во все мои запросы в магазине vuex.

const HTTP = axios.create({
  baseURL: process.env.VUE_APP_BASE_URL,
  headers: {
    'Authorization': {
      toString () {
        return `Bearer ${localStorage.getItem('admin-token')}`
      }
    },

    'Accept': 'application/json'
  }
})

Создавая новый экземпляр axios на каждый запрос, мой сервер не отправляет ответ 304.

import axios from 'axios'
import jwtDecode from 'jwt-decode'

[...]

axios({
   baseURL: process.env.VUE_APP_BASE_URL,
   url: '/api/v1/dr_claims/deliver-dr',
   method: 'POST',
   headers: {
     'Authorization': {
          toString () {
             return `Bearer ${localStorage.getItem('admin-token')}`
          }
      }
   }
})

[...]

Не думаю, что это лучший способ справиться с этой ошибкой, но, похоже, все в порядке.

0 голосов
/ 18 апреля 2019

Третий вызов использует method=OPTIONS вместо method=GET. Вам нужно будет найти способ заставить ваш API распознавать третий запрос как запрос GET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...