@CodeVision

Как при редиректе передать заголоки?

res.header('authorization', `Bearer ${accesToken}`);
                res.redirect('/chat');

У меня есть енд-поинт на авторизацию post Method но при передачи заголовка на авторизацию он не передаеться в /chat
Как исправить?
  • Вопрос задан
  • 723 просмотра
Решения вопроса 1
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
There are no options that will send access tokens automatically during HTML requests. They are designed to only be sent when your code explicitly requests it. This prevents certain vulnerabilities that were common with cookies.

Короткий ответ - никак.

Вы отправляете браузеру команду перейти по новому адресу, какие бы заголовки до этого или сразу за этим вы не передали, браузер переходит по новому урл со "стандартными настройками", как если бы вы нажали на какую-то ссылку (хинт - при таком переходе заголовками вы не управляете вообще никак, а на переданные до перехода заголовки браузер тупо забивает).

Что делать и как дальше жить?
Нужно вернуть нормальный ответ в клиент, который будет содержать в том числе ваш токен и статус успешности авторизации, там его обработать, и оттуда уже отправлять запрос на соответствующий эндпоинт. Другое дело что с фронта переадресация не умеет выставлять заголовки, с ними может работать только фетч или XMLHttpRequest, соответственно токен надо либо писать в куки и на бэкенде читать оттуда, либо передавать постом, и затем извращаться с вытаскиванием его из поста, опять в куки, потом редирект на гет чтобы не было предыдущего пост, и так до посинения...

Короче - ваш код подходит для работы с внешним апи (только редирект там не нужен), но не подходит для работы с клиентом, не работающим в режиме SPA (где тоже работать не будет, так как редирект).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы