事件源(EventSource) XHR 头部

10

我正在尝试使用EventSource建立与服务器的流连接。但是,我需要在底层XHR请求中设置会话密钥头。如果可能的话,我该如何从EventSource对象中访问XHR?谢谢!

注意,我不确定是否已经支持CORS与EventStream,这将首先阻止我的操作,但我已经在某些地方读到应该支持...

2个回答

10

首先,好消息是几乎所有支持SSE的浏览器也支持并正常使用CORS。(一年前还存在问题,所以只有在处理坚持使用过时版本的自动更新现代浏览器的用户时才会遇到问题,这是不寻常的组合。)

  • 然而,坏消息是:您无法在EventSource请求中设置标头。如果您想能够设置标头,则需要返回到老式的XHR流。

  • 另一方面,可以发送Cookie,因此如果您的会话信息可以通过Cookie发送,则可以工作。

  • 但是,Cookie与CORS冲突;因此,如果您需要同时使用SSE和第三方站点的身份验证,您将感到沮丧。您必须回退到使用XHR。

对于明目张胆的插件表示歉意,但我所知道的关于这两个主题的最佳信息来源是我的SSE书的第9章。这是最难写的一章 :-).


1
另一种方法是通过URL发送授权令牌,并与HTTPS结合使用,这样仍然可以避免令牌劫持。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接