【问题标题】:WebSocket hosted not in port 80 firewall issuesWebSocket 托管不在端口 80 防火墙问题
【发布时间】:2015-02-15 13:08:04
【问题描述】:

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

我不能使用端口 80(IIS 正在使用它),443 和 8080 都不能。

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

唯一的办法是使用IIS8作为共享同一个端口(80)? (我正在使用带有 SuperWebSocket 库的 IIS7)

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

提前致谢。

【问题讨论】:

    标签: iis iis-7 websocket


    【解决方案1】:

    为了解决您问题的核心,我非常成功地意识到我的 Web 服务器和 Web Socket 服务器都可以在端口 80 上,但是不同的主机( origins )。只要 Web Socket 服务器可以处理来自您的网页源的 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 都不能。 托管在自定义端口上的 WebSocket 是否会出现防火墙问题?

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

    【讨论】:

      【解决方案2】:

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

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

      如果您的 WebSocket 服务器配置为将连接限制为特定来源 (CORS),那么您将需要允许该来源建立连接。源是 Web 服务器的地址,该服务器将为发出 WebSocket 请求的网页提供服务。默认值通常要么完全开放,要么仅限于 websocket 服务器本身的地址。

      【讨论】:

        【解决方案3】:

        根据here:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-06-17
          • 1970-01-01
          • 1970-01-01
          • 2019-09-11
          • 1970-01-01
          • 2015-01-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多