n3r*_*3rd 13 javascript browser websocket
我正在使用websockets,看来,我测试的所有具有本机websocket支持的浏览器(Safari,Chrome)阻止了一些端口.如果我尝试通过端口80连接到我的服务器,每个工作正常.如果我尝试其他端口,如81,82或1000,则连接过早关闭,因为另一端没有任何东西.这是预期的行为,它的工作非常精彩.
但是,对于某些端口(例如20,37或79),Chrome开发人员控制台只是说,WebSocket port 79 blocked
但我的JS代码没有收到任何有关此信息的信息(甚至没有某种超时).Safari有点冗长和评论SECURITY_ERR: DOM Exception 18: An attempt was made to break through the security policy of the user agent.
所以我的问题是:
如何可靠地检测到端口被阻塞?
我是否必须设置超时并手动检查?这似乎不是最明智的方式,尽管它可能是跨浏览器的唯一方法.
我在哪里可以找到被阻止端口的列表?
不幸的是,我的谷歌搜索没有发现任何有用的东西.
为什么这些端口首先被阻止?
提前致谢!
n3r*_*3rd 26
好的,我找到了答案.有时你只是看不到森林里的树木.
首先,处理被阻塞端口的情况是微不足道的.一个简单try/catch
的诀窍.我只是对Chrome显示异常的方式感到困惑,并且没有立即认出它(我通常使用Firefox).
其次,WebSockets API规范明确指出了这一点
如果port是用户代理配置为阻止访问的端口,则抛出SECURITY_ERR异常.(用户代理通常会阻止访问SMTP等知名端口.)
这意味着什么端口似乎取决于浏览器的Websocket实现.我的测试显示Chrome和Safari阻止了以下端口(仅测试了1024以下的端口):
要向旧问题添加新列表:
https://chromium.googlesource.com/chromium/src.git/+/refs/heads/master/net/base/port_util.cc
// The general list of blocked ports. Will be blocked unless a specific
// protocol overrides it. (Ex: ftp can use ports 20 and 21)
const int kRestrictedPorts[] = {
1, // tcpmux
7, // echo
9, // discard
11, // systat
13, // daytime
15, // netstat
17, // qotd
19, // chargen
20, // ftp data
21, // ftp access
22, // ssh
23, // telnet
25, // smtp
37, // time
42, // name
43, // nicname
53, // domain
77, // priv-rjs
79, // finger
87, // ttylink
95, // supdup
101, // hostriame
102, // iso-tsap
103, // gppitnp
104, // acr-nema
109, // pop2
110, // pop3
111, // sunrpc
113, // auth
115, // sftp
117, // uucp-path
119, // nntp
123, // NTP
135, // loc-srv /epmap
139, // netbios
143, // imap2
179, // BGP
389, // ldap
427, // SLP (Also used by Apple Filing Protocol)
465, // smtp+ssl
512, // print / exec
513, // login
514, // shell
515, // printer
526, // tempo
530, // courier
531, // chat
532, // netnews
540, // uucp
548, // AFP (Apple Filing Protocol)
556, // remotefs
563, // nntp+ssl
587, // smtp (rfc6409)
601, // syslog-conn (rfc3195)
636, // ldap+ssl
993, // ldap+ssl
995, // pop3+ssl
2049, // nfs
3659, // apple-sasl / PasswordServer
4045, // lockd
6000, // X11
6665, // Alternate IRC [Apple addition]
6666, // Alternate IRC [Apple addition]
6667, // Standard IRC [Apple addition]
6668, // Alternate IRC [Apple addition]
6669, // Alternate IRC [Apple addition]
6697, // IRC + TLS
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8489 次 |
最近记录: |