#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 он все равно будет защищен от перехвата токена.