微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – 将端口443用于Socket.IO是一个坏主意吗?

根据以下帖子,一些网络只允许连接到端口80和443:
Socket IO fails to connect within corporate networks

编辑:为了澄清,问题是当最终用户在公司防火墙后面使用浏览器时.我的服务器防火墙设置在我的控制之下.

我已经阅读了关于Nginx使用proxy_pass到Socket.io监听另一个端口(我已经读过它的缺点)以及使用nodejitsu / node-http-proxy反向代理将非节点流量传递给Nginx(这有其它缺点) ).我有兴趣考虑所有可能的选择.

经过多次搜索,我没有找到任何有关socket.io监听端口443的可能性的讨论,如下所示:

var io = require('socket.io').listen(443);

客户端会像这样连接:

var socket = io.connect('http://url:443/', {secure: false, port: '443'});

除了在该服务器上放弃使用https之外,还有其他任何缺点吗? (例如,企业网络是否阻止通过端口443进行非SSL通信?)

解决方法:

端口443上的非加密流量可以工作,但是如果你想要与具有偏执和不太合适的安全策略的网络兼容,你应该假设有人已经“保护”自己反对它.

无论愚蠢的防火墙如何,您都应该使用SSL加密的WebSockets,因为WebSocket协议与HTTP不兼容(它伪装成这样,但这还不够)并且无法与HTTP代理可靠地协同工作.

例如,O2 UK(可能还有许多其他移动ISP)通过其代理管道所有非加密连接,以重新压缩图像和审查网站.他们的代理断开WebSocket连接,唯一的解决方法是使用SSL(除非你对Socket.IO回到jsonp轮询感到满意……)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐