4

EventSource当我在 JavaScript 中创建一个新的来侦听服务器发送的事件时,如下所示:

var source = new EventSource("data/pushed");

我有什么方法可以在传出的 HTTP 请求中指定其他标头(例如某些身份验证令牌)?

4

2 回答 2

6

不,EventSource 标准不包括setRequestHeader这种方式XMLHttpRequest

它也不支持 POST。但你确实有饼干。因此,在可行的情况下,我首选的身份验证令牌方法是让用户首先登录并创建一个会话,然后该会话 cookie 将与您的 SSE 请求一起传递。(除此之外:如果使用 PHP 并使用带有 SSE 的会话,请记住它们已被锁定,因此您的 SSE 进程应session_write_close()在验证用户后立即调用。其他语言的会话可能有类似的问题。)

我可以建议的唯一其他选择是使用XMLHttpRequest(即彗星方法)。

于 2016-03-25T19:01:28.360 回答
2

我们有类似的问题,我们最终决定通过 URL 发送我们的授权令牌,而不用担心安全性,因为它将受到 SSL 保护(在生产中,当然,我们使用 HTTPS 协议)。

于 2017-04-05T15:19:05.920 回答