弹性豆茎剥离Sec-WebSocket-Accept报头



我试图得到一个。net Core应用程序在弹性豆茎上运行,从浏览器中的javascript接收websockets连接。

当我在本地机器上测试AWS外部的客户端和服务器时,我能够在两者之间建立websocket连接。但是,当我将服务器部署到弹性beanstalk时,我得到以下错误

WebSocket connection to 'ws://52.62.253.144/' failed: Error during WebSocket handshake: 'Sec-WebSocket-Accept' header is missing

服务器回复101交换协议,所以我知道服务器正在尝试建立连接,但Sec-WebSocket-Accept头丢失。在本地测试时,这个头文件是存在的。

弹性豆柄是否可能从响应中剥离Sec-WebSocket-Accept ?它目前配置为"单实例"场景,而不是自动伸缩。

Thanks in advance

同样的事情发生在我的Tomcat/Java项目中,最终通过将ELB协议切换到TCP/SSL来修复。官方文档告诉你如何切换它们,你可以试试这个,让我知道。

AWS不接受标题中的unserscores(_),而我们可以使用(-),因此从标题变量中删除下划线,例如:- header_var_val =" some value"替换为headervarval =" some value"。

这可能不适合每个人,但我有同样的问题,我意识到大量的cookie被转发,因为我使用相同的域名网站和websocket。

当我刷新cookie时,Sec-WebSocket-Accept报头返回。

我很想知道这是由于报头长度还是由于cookie中的错误字符。

编辑

似乎长度是问题所在。最好的做法是为websocket和site使用单独的域,因为根据下面的问题,在创建websocket时不可能禁用header中的cookie。

如何在创建websocket时禁用Header中的cookie ?

相关内容

最新更新