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