Получение заголовков из ответа 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