我们有一个嵌入了jetty webserver的java服务器,以及客户端的air app。
它在某个客户的单一情况下正常运作。
他们有一个不受他们管理的私人网络(并且很少有机会根据请求进行更改)。因此,他们允许的唯一端口是80和443。
服务器和客户端之间的通信是通过websockets和http。
" online"检查是通过http进行的,然后,我们使用websockets通知客户端,以便开始它们之间的通信。
事情是,在这种情况下,"在线"状态正常工作,客户端发送的任何通信(强制),当它通过http时,都会到达服务器,但是,当服务器与客户端通信时,使用websockets,它不起作用。
我们正在使用wireshark检查通信:在工作设置中,当客户端应用程序启动时,websocket显示在服务器端(在服务器上注册客户端)上。之后,仅用于从服务器到客户端的websockets也不会显示。
可能是什么问题? 80端口? (在该网络上443也是如此)。 可以阻止ws://消息的代理/防火墙吗? 我在某处读过wss://(encripted websockets)会起作用吗?
感谢您的帮助。
编辑,所以,我尝试使用https和wss通信,同样的事情发生..在客户端和服务器之间没有设置websocket(在服务器上注册客户端)。
客户网络上的http发生了这种情况。在我的测试网络上,它适用于http / ws但不适用于https / wss ..
答案 0 :(得分:3)
有很多防火墙和网关“在野外”,不了解整个WebSocket HTTP / 1.1 GET - >升级 - > WebSocket机制。
有几个破坏的防火墙实现会尝试将WebSocket框架解释为HTTP / 1.1的不正确内容(这是对HTTP / 1.1规范的错误读取)并开始捣乱它。
检查/过滤/分析请求/响应内容的防火墙类型是最容易受到攻击的类型。
我会检查他们用来防火网络的硬件(或软件)是否兼容并升级为支持WebSocket RFC-6455。