Vue.http.get с авторизацией - делает 2 запроса и не работает только на iOS - PullRequest
0 голосов
/ 29 ноября 2018

Я должен сделать аутентифицированный HTTP-запрос с использованием токена на предъявителя.Это работает безупречно на всем, что я тестировал ... кроме некоторых устройств iOS.

  fetchWithToken : function( endpoint, token ){
    return Vue.http.get( urlBase + endpoint, {
      headers : {
        Authorization : 'Bearer ' + token
      }
    });
  },

Насколько я могу судить, запрос отправляется дважды.Обратите внимание, что эта функция вызывается только один раз (проверяется отладкой), но сервер получает 2 запроса.Первый запрос содержит токен и успешно авторизуется.Второй не имеет токена и дает сбой, возвращая этот сбой остальной части моего приложения.

Два HTTP-запроса от одного вызова заставляют меня думать, что запросы CORS предполётные.Однако это тот же домен, и переменная urlBase в этой функции является относительным адресом ('/ api /'), а не полным URL-адресом.

iOS заставляет CORS?И если да, то почему второй запрос отправляется без заголовка авторизации вместо предварительного запроса?

1 Ответ

0 голосов
/ 30 ноября 2018

Плохая комбинация событий.Сервер (приложение Symfony) выполнял перенаправление 301 для конечных точек, которые не заканчивались косой чертой.Очевидно, iOS - единственный пользовательский агент, который не позволяет заголовку авторизации переноситься при перенаправлении 301.Таким образом, первый запрос имел токен, он был 301-й, а второй запрос - нет.В основном 3 часа регистрации и отслеживания всего, чтобы узнать, что мне нужно завершить свои вызовы конечной точки с помощью /.

...