WebSocket不托管端口80防火墙问题

时间:2012-08-02 17:16:33

标签: iis iis-7 websocket

未在端口80中托管的websocket服务器在Internet浏览器中是不可见的吗?

我不能使用端口80(它被IIS使用)既不是443也不是8080。

自定义端口上托管的websockets是否会出现防火墙问题?

唯一的方法是使用IIS8共享同一个端口(80)? (我正在使用IIS7和SuperWebSocket库)

从浏览器访问的Websockets不应该部署在自定义端口中吗?

提前致谢。

3 个答案:

答案 0 :(得分:1)

为了解决问题的核心,我已经取得了最大的成功,我意识到我的Web服务器和Web Socket服务器都可以在端口80上,但是不同的主机(起源)。只要Web Socket服务器可以处理来自Web页面的CORS请求,这似乎是一种避免防火墙问题的方法,并导致从Web服务器和WebSocket服务器动态获取静态内容的体系结构。

所以故事是:

  • 从web.server.com:80发送页面(这是起源)

  • 在该网页的应用程序空间中打开WebSocket到websocket.server.com:80/serviceName

    (提出websocket.server.com需要允许的跨源请求,可能会将web.server.com列入白名单)

  • 分别愉快地提供动态内容和静态内容。

您的一些问题的一些更具体的答案:

  
    

未在端口80中托管的WebSocket服务器在Internet浏览器中是不可见的吗?

  

没有。如果需要,您在浏览器中的应用程序可以打开WebSocket到其他端口, 受CORS限制。通常,将WebSocket保留在端口80上是有利的,这样中间人和边缘网关就不必更改防火墙规则。

  
    

我不能使用端口80(它被IIS使用)既不是443也不是8080。     自定义端口上托管的WebSockets是否会出现防火墙问题?

  

最有可能的是,除非您控制防火墙并且可以打开其他端口。

答案 1 :(得分:1)

如果您可以控制防火墙,那么在自定义端口上运行websocket服务器就没有问题。您只需打开端口以允许到该端口的传入流量。

问题不仅仅是防火墙本身,而是在流量到达服务器之前发生的其他类型的过滤,代理,负载平衡等。但是,除非您没有提到您没有提到的具体要求,否则不应该只允许该端口上的流量。

如果您将WebSocket服务器配置为限制与特定源(CORS)的连接,则需要允许源进行连接。原点是将提供WebSocket请求的Web页面的Web服务器的地址。默认值通常是全开或仅限于websocket服务器本身的地址。

答案 2 :(得分:1)

根据here

  

警告:服务器可以侦听它选择的任何端口,但是如果它   选择80或443以外的任何端口,它可能有问题   防火墙和/或代理。端口443上的连接往往更成功   通常但当然需要安全连接(TLS / SSL)。   另请注意,大多数浏览器(尤其是Firefox 8+)都不允许   从安全页面连接到不安全的WebSocket服务器。