浏览器访问提示ERR_UNSAFE_PORT

嗯… 无法访问此页面似乎http://xxx.xxx.xx.xx:22/ 上的网页可能有问题,或者该网页可能已永久移到新的网址。 ERR_UNSAFE_PORT

嗯… 无法访问此页面似乎http://xxx.xxx.xxx.xx:22/ 上的网页可能有问题,或者该网页可能已永久移到新的网址。 ERR_UNSAFE_PORT

正如浏览器的英文"UNSAFE PORT"提示所述,出现这个问题,主要是因为你的Web服务器使用了不安全的端口。

我们都知道,在绝大多数操作系统上,一般会有6万多个端口(0~65535)可以供应用程序或服务使用。为了降低不同类型应用程序、通信协议之间出现端口占用的冲突,IANA(互联网号码分配局)提供了一些约定和建议。例如:

01023 范围内的端口,属于公认的端口,它们中的大多数都紧密绑定与一些服务。例如:80端口常用于HTTP通讯。443端口用于HTTPS(SSL)通讯;22端口用于SSH协议。 102449151 范围内的端口,属于注册端口,它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。 49152~65535 范围内的端口,属于动态或私有端口,理论上,服务一般不会注册在这些端口上,可以让我们自己私有使用。 如果想了解更多的服务或传输协议的端口规范,你可以参考IANA提供的服务或传输协议的端口注册列表,其中列出了我们常见的应用服务和传输协议应该被建议使用的端口号。

现代的浏览器绝不仅仅只是一个简单的HTTP(S)数据传输工具,为了满足用户的需要,它不仅仅只提供HTTP(S)服务,它也会与系统的、内置的、第三方插件的各种服务进行各种通讯交互。

为了避免与其它通讯交互产生冲突,也为了安全考虑,浏览器会限制访问一些明显与其他服务绑定、容易产生冲突的端口号。比如,Chrome浏览器在源代码中就限制了使用以下端口号的Web服务器的访问:

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
};

因此,避免浏览器端口号限制的最简单方式,就是直接调整Web服务器的端口号(在上述限制的端口号范围之外)。 当然,如果你当前无法控制Web服务器的话,并且仅限于本机浏览器测试使用,你可以采取如下措施:

Chrome浏览器:右键桌面上 【Chrome浏览器】的快捷方式,在关联菜单中点击[属性],在[目标]栏中的追加参数 --explicitly-allowed-ports=端口号1,端口号2(端口号之间以英文逗号隔开)。例如将"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"修改为"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe --explicitly-allowed-ports=6666,7777"。

Firefox浏览器:在地址栏输入about:config,在列出的选项列表上右键点击,在弹出的关联菜单上点击【新建】 - 【字符串】,在弹出框中填写参数名称network.security.ports.banned.override,接着在参数值里面填写你指定的端口号即可解除对该端口号的限制。

  • 1.本站主要是为了记录工作、学习中遇到的问题,可能由于本人技术有限,有些不正确的地方,仅供参考。
  • 2.本站中会转载我认为有用的博客文章,添加一些外链网站地址,但这些博客文章、论坛和网站上的内容和我没有关系,不代表我的意见,请网友自己多注意辨别。
  • 3.本站中转载文章会写明来源(点击下方链接按钮即可),感谢原作者的辛苦写作,如果有异议,及时联系我处理,谢谢!
  • 4.欢迎指出有问题的地方,我会尽快修正,谢谢!

本篇文章非原创,点击此处查看原文

系统由 Nginx + Next.js + React + Node + TailWindCss 驱动

沪ICP备20021316号