EventSource XHR заголовки
Я пытаюсь использовать EventSource для потокового соединения с сервером. Но мне нужно установить заголовок сеансового ключа в базовом запросе XHR. Как мне получить доступ к XHR из объекта EventSource, если это вообще возможно? Спасибо!
Обратите внимание, что я не уверен, поддерживается ли CORS даже с EventStream, что в первую очередь помешало бы этому, но в некоторых местах я читал, что это должно поддерживаться...
2 ответа
Во-первых, хорошей новостью является то, что почти каждый браузер, поддерживающий SSE, также поддерживает CORS и работает с ним. (Год назад были проблемы, поэтому вы столкнетесь с проблемами только в том случае, если будете иметь дело с пользователями, которые настаивают на использовании устаревшей версии современного браузера с автоматическим обновлением, что является необычной комбинацией.)
Теперь плохие новости: вы не можете устанавливать заголовки на запросы EventSource. Вам нужно будет вернуться к хорошей потоковой XHR-передаче, если вы хотите иметь возможность устанавливать заголовки.
С другой стороны, файлы cookie отправляются, поэтому, если ваша информация о сеансе может быть отправлена файлом cookie, это будет работать.
С другой стороны, куки конфликтуют с CORS; так что если вам нужны SSE и аутентификация на сторонних сайтах, вы будете разочарованы. Вы должны отказаться от использования XHR.
Извиняюсь за откровенный плагин, но лучший источник информации, который я знаю, по обеим этим темам - глава 9 моей книги по SSE. Это была самая трудная глава для написания:-).
Альтернативный подход заключается в отправке вашего токена авторизации через URL-адрес, и в сочетании с HTTPS он по-прежнему будет защищен от перехвата токенов.