После нескольких дней размышлений о том, что происходит, я не верю, что браузер или угловое приложение спроектированы таким странным образом, чтобы не слушать друг друга - под этим я имею в виду согласие на код статуса HTTPсделать правильное перенаправление.
Причина, по которой у меня происходило странное перенаправление в запросе XHR, а не в запросе document
или html/plain text
, заключается в том, что последний вообще не обращался к маршрутам authentication guards
.Итак, произошло то, что angular был успешно инициализирован, и клиент уже отправлял запрос XHR.Таким образом, сервер упустил возможность отправить обратно код перенаправления 302 на ангуар с соответствующего канала, да, через XHR он это сделал, но браузер не отвечает на это.
Почему это произошло?Потому что до защиты маршрутов у меня была такая строка:
app.use(express.static(path.join(__dirname, 'dist')));
Это значит express.js
обслуживать статические файлы из папки 'dist'.
Я всегда думал, что это просто конфигурация, но это больше, чем это.На самом деле он полностью открывает dist/
и позволяет файлам свободно загружаться в браузер без проблем, и, таким образом, шансы на перенаправление полностью упускаются.
Итак, после перемещения этой линии ниже маршрутов guarding
все в порядке.
Теперь угловая инициализация была перенаправлена в порядке, как и должно быть.Теперь мне нужно выполнять угловую сторону перенаправления только в определенном случае, когда, например, обнаружена ситуация с запретом доступа 401, сервер перезапущен.