我尝试使用EventSource进行与服务器的流式连接。但我需要在底层XHR请求上设置会话密钥头。如果可能,我如何从EventSource对象访问XHR?谢谢!
请注意,我还不确定EventStream是否支持CORS,这会阻止它首先为我工作,但我在某些地方读过它应该支持它。 ..
答案 0 :(得分:8)
首先,好消息是每个支持SSE的浏览器都支持CORS并使用它。 (一年前有问题,所以如果与那些坚持运行现代自动更新浏览器的过时版本的用户打交道,那么你只会遇到问题,这是一种不同寻常的组合。)
现在的坏消息是:您无法在EventSource请求上设置标头。如果您希望能够设置标题,则需要返回到良好的XHR流媒体。
另一方面,cookie被发送,所以如果您的会话信息可以通过cookie发送,那么这将是有效的。
另一方面,cookies与CORS发生冲突;因此,如果您需要SSE和第三方网站的身份验证,您将会感到沮丧。您必须回退使用XHR。
在my book on SSE的第9章中,公开插件的道歉,但我所知道的关于这两个主题的最佳信息来源。这是最难写的章节: - )。
答案 1 :(得分:0)
另一种方法是通过URL发送您的授权令牌,结合HTTPS,它仍然可以安全地进行令牌劫持。