2016-11-29 59 views
0

我无法让我的应用程序利用网络套接字工作。带代理的Websockets

我有一个网站www.example.com,它使用反DDoS服务,因此它解析为IP X.X.X.X.服务器的真实地址是Y.Y.Y.Y.反DDoS服务不会代理网络套接字流量,所以我想直接将它流式传输到真实地址(实际上很难找到它来进行攻击,所以这会起作用),所以我所做的不是将它指向ws:/ /www.example.com:100/,我指出它是ws:// YYYY:100 /。

现在,如果我的真实IP(http://Y.Y.Y.Y)访问我的应用程序,它连接到WS:// YYYY:100 /得很好,但如果我使用http://www.example.com链接(其解析为XXXX),WS:// YYYY: 100 /不会连接说“WebSocket连接到'ws:// YYYY:100 /'失败:连接建立时出错:net :: ERR_CONNECTION_REFUSED”。

我想这与安全有关,但我不知道究竟是什么。请帮忙。

回答

0

也许WebSocket的服务器发现的域OriginHost HTTP报头域不同的HTTP报头,它是拒绝,因为该连接。 Origin标题通常用于确定连接是否来自允许的网站,因为websockets不在同一来源策略下。

的作品看起来像这样的请求:

GET/HTTP/1.1 
Host: YYYY 
Upgrade: websocket 
Connection: Upgrade 
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw== 
Sec-WebSocket-Version: 13 
Origin: http://YYYY 

被拒绝看起来像这样的请求:

GET/HTTP/1.1 
Host: YYYY 
Upgrade: websocket 
Connection: Upgrade 
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw== 
Sec-WebSocket-Version: 13 
Origin: http://www.example.com 

这是很难说与这个小信息。你没有在服务器日志中发现任何错误吗?

+0

下面是我抓使用招交通:CONNECT YYYY:100 HTTP/1.1 主持人:YYYY:100 代理连接:保持活动 的User-Agent:Mozilla的/ 5.0(Windows NT的6.3; Win64平台; 64)为AppleWebKit /537.36(KHTML,如Gecko)Chrome/54.0.2840.99 Safari/537.36 – user1826208

+0

响应:HTTP/1.1 502 Fiddler - 连接失败 日期:2016年11月29日16:02:10 GMT Content-Type:text/html;字符集= UTF-8 连接:关闭 缓存控制:无缓存,必须-重新验证 时间戳:19:02:10.161 [提琴手]为 'Y.Y.Y.Y' 的连接失败。
错误:ConnectionRefused(0x274d)。
System.Net.Sockets.SocketException由于目标机器主动拒绝它,因此无法建立连接Y.Y.Y.Y:100 – user1826208

+0

服务器日志中没有任何内容,这些类型的问题可能会被我使用的框架(Fleck)所抑制。 – user1826208