通过https建立SSE连接失败

时间:2018-07-24 11:11:34

标签: https server-sent-events

据我了解,要建立一个事件流,必须在客户端上创建一个事件源对象,然后将其传递给服务器向其进行注册的端点。服务器在接收到此请求后,将适当地设置响应头,并按照事件流格式发送数据。我已经设置了此流程,并且可以通过http进行工作,但是将SSL添加到服务器后,将创建事件流,并且服务器将引发501-未实现错误。经过研究,我认为这可能是CORS问题,并添加了适当的标头,但这也没有任何区别。我还尝试了一些小的修复程序,这些修复程序通常可解决501错误,例如清除浏览器缓存和禁用任何代理设置。我对此完全感到困惑,如果有人可以帮助我理解问题以及解决问题的最佳方法,我将不胜感激。

编辑:

客户端通过aws elb负载均衡器将请求发送到服务器,该负载均衡器从请求中剥离ssl并将请求转发到服务器。除了CORS相关问题外,服务器抛出501错误的另一个可能原因是请求已更改。

  • 当负载平衡器在将SSL转发给服务器之前从请求中删除SSL时,是否有可能以某种方式更改sse请求,从而导致服务器抛出错误?一个人将如何监视进入负载均衡器的请求和转发的请求?

此外,通过进一步研究,我了解到内部服务器端事件本质上是HTTP流的一种形式。即使在发送数据之后,该请求仍保持打开状态,直到客户端明确将其关闭为止。考虑到我的第一个直觉是错误的,因此将SSL剥离并转发到服务器,而不更改请求,并且服务器发送响应标头和心跳信号以保持连接有效。

  • 这是否意味着流也已加密?

服务器使用Koa编写。 sse注册端点如下所示:

sed

这也是sse事务的客户端的样子:

echo  "/Home/in/test_file.txt" | sed 's/\(.*\/\).*/\1/;s/\/$//'

0 个答案:

没有答案