我试图得到一个。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 ?