Получение заголовков из ответа 302 (перенаправление) в угловых 4.3+

Я потратил около 24 часов на поиск и пробование различных решений, связанных с переполнением стека и другими источниками, но безрезультатно.

Вот моя постановка проблемы.

С приложениями SPA вам, очевидно, нужно использовать неявные гранты при использовании JWT. Это нормально, однако, единственный способ, которым я могу получить этот JWT, это сделать запрос POST или GET с полезной нагрузкой или URL-параметрами, содержащими конкретную информацию (идентификатор клиента, тип токена и т. Д.). Конечная точка (в случае успеха) отвечает статусом 302 и заголовком Location, содержащим маркер доступа, который мне нужен для выполнения запросов API.

Из того, что я видел до сих пор, похоже, что в Angular нет способа перехватить перенаправление 302. Я попытался создать свой собственный сервис перехватчика (самый близкий, который я получил, был ответом 200 после того, как страница была перенаправлена).

Я попытался включить опцию "наблюдаем: ответ" в моих запросах get/post, но опять-таки заголовок Location отсутствует, и он никогда не показывает 302 (даже если я вижу его в консоли отладки).

Я убедился, что это НЕ проблема CORS, потому что на прокси для опции expose headers установлено значение location.

Единственное, что я могу сделать, чтобы заставить его работать - это использовать iframe и прослушивать iframe для перенаправления. Но я не хочу этого делать, так как это неуклюже и не всегда надежно.

Может ли кто-нибудь сказать мне, есть ли способ перехватить, перехватить или просмотреть заголовок местоположения в ответе 302 на запрос GET/POST, используя Angular's Httpclient? Есть ли какой-нибудь плагин или модуль узла, который я могу загрузить, чтобы помочь мне достичь этого?

0 ответов

Код состояния 302 - перенаправление URL будет напрямую обрабатываться браузером. HTTP-клиент Angular2 не получит это событие.

попробуйте использовать скрипт Jquery

$.ajax({
        url: "service call URL",
        dataType: "script",
        crossDomain: true,//if needed
        statusCode: {
          302: function() {
             alert( "redirect" );
          }
        }
        success: function(){}
      });

http://api.jquery.com/jquery.ajax/

разделstatusCode

Другие вопросы по тегам