Выбор ответа Middle WebSocket и SSE обновлено
Авторизация в EventSource
Вопрос
Фронт хочет передать в EventSource заголовок Authorization: Bearer .... Что верно?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: EventSource не ставит свои заголовки: авторизуют кукой или читают поток через fetch. Конструктор EventSource(url, { withCredentials }) принимает только флаг кук.
Варианты ответа
- Достаточно передать вторым аргументом конструктора
{ headers: { Authorization } } - EventSource сам возьмёт токен из localStorage и подставит его в заголовок
Authorization - Заголовок задаётся через
es.setRequestHeader('Authorization', ...)до открытия потока - EventSource не ставит свои заголовки: авторизуют кукой или читают поток через fetchправильный ответ
Разбор
Конструктор EventSource(url, { withCredentials }) принимает только флаг кук. Опции headers и метода setRequestHeader у него нет, это есть у fetch и XMLHttpRequest. Поэтому либо кука, либо ручное чтение text/event-stream через fetch и ReadableStream. Сам браузер ничего из localStorage не подставляет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.