EventSource
当我在 JavaScript 中创建一个新的来侦听服务器发送的事件时,如下所示:
var source = new EventSource("data/pushed");
我有什么方法可以在传出的 HTTP 请求中指定其他标头(例如某些身份验证令牌)?
EventSource
当我在 JavaScript 中创建一个新的来侦听服务器发送的事件时,如下所示:
var source = new EventSource("data/pushed");
我有什么方法可以在传出的 HTTP 请求中指定其他标头(例如某些身份验证令牌)?
不,EventSource 标准不包括setRequestHeader
这种方式XMLHttpRequest
。
它也不支持 POST。但你确实有饼干。因此,在可行的情况下,我首选的身份验证令牌方法是让用户首先登录并创建一个会话,然后该会话 cookie 将与您的 SSE 请求一起传递。(除此之外:如果使用 PHP 并使用带有 SSE 的会话,请记住它们已被锁定,因此您的 SSE 进程应session_write_close()
在验证用户后立即调用。其他语言的会话可能有类似的问题。)
我可以建议的唯一其他选择是使用XMLHttpRequest
(即彗星方法)。
我们有类似的问题,我们最终决定通过 URL 发送我们的授权令牌,而不用担心安全性,因为它将受到 SSL 保护(在生产中,当然,我们使用 HTTPS 协议)。