Заголовки XHR-источника событий

#javascript #stream #long-polling #server-sent-events

#javascript #поток #длительный опрос #отправленные сервером события

Вопрос:

Я пытаюсь использовать EventSource для потокового подключения к серверу. Но мне нужно установить заголовок ключа сеанса для базового запроса XHR. Как мне получить доступ к XHR из объекта EventSource, если это вообще возможно? Спасибо!

Обратите внимание, что я не уверен, поддерживается ли CORS даже с EventStream, что в первую очередь помешало бы этому работать для меня, но я читал в определенных местах, что это должно поддерживаться…

Ответ №1:

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

  • Теперь плохие новости: вы не можете устанавливать заголовки для запросов EventSource. Вам нужно будет вернуться к хорошей потоковой передаче ole XHR, если вы хотите иметь возможность устанавливать заголовки.

  • С другой стороны, отправляются файлы cookie, поэтому, если информация о вашем сеансе может быть отправлена с помощью файла cookie, это сработает.

  • С другой стороны, файлы cookie конфликтуют с CORS; поэтому, если вам нужны как SSE, так и аутентификация на сторонних сайтах, вы будете разочарованы. Вы должны вернуться к использованию XHR.

Прошу прощения за вопиющую вставку, но лучшим источником информации, который я знаю по обеим этим темам, является глава 9 моей книги о SSE. Это была самая сложная глава для написания :-).

Ответ №2:

Альтернативным подходом было бы отправить ваш токен авторизации через URL, и в сочетании с HTTPS он все равно будет защищен от перехвата токена.