读万卷书,行万里路!有的技能可以从书里学会,有的技能却需要在实战中打怪升级慢慢掌握,今天就来和大家聊一个很多小伙伴经常遇到的问题。

缘起

有人向松哥反映,在搭建微服务分布式配置中心 Spring Cloud Config 时,如果将端口设置为 6000,总是访问不成功,像下面这样:

如果换成 Tomcat 默认的 8080 就可以访问了。

其实不止 6000,如果你配置成 6666 ,也是无法访问成功的!

分析

刚入行或者经验欠缺的小伙伴应该很容易遇到这个问题,松哥就来和大家稍微说一说这个问题。

首先,当我们将项目的端口设置为 6000 之后,并非仅仅只有 Chrome 无法访问,Firefox、Safari 也是无法访问的,反而是经常被大家忽略的坐在角落的 IE/Edge 这对难兄难弟可以访问!看看 Safari 访问 6000 端口怎么说:

再看看 Firefox 访问 6000 端口怎么说:

但是 Edge 就可以访问,如下:

看到这里,大家首先可以确认出现这个问题,和你的代码没有关系!是不是可以松一口气了!

这个问题实际上是由 Chrome 默认的非安全端口限制导致的,除了上文说的 6000,还有其他端口也无法在 Chrome 、Firefox 以及 Safari 中访问(具体端口见文末列表)。

这些无法访问的端口大部分都是小于 1024,小于 1024 的端口大家应该会很少使用,基本上不会在这个上面栽跟头。大于 1024 的端口也并非每一个都可以使用,这才是容易犯错的地方。

解决

那么问题要怎么解决呢?两个思路:

  1. 修改项目端口(推荐)
  2. 修改浏览器配置,使之允许访问非安全端口

推荐大家使用第一种方案,省事!

如果要使用第二种方案:

  • Chrome 修改办法如下:

右键单击Chrome快捷方式 -> 目标 -> 末尾添加参数:--explicitly-allowed-ports=6000

  • Firefox 修改办法如下:

浏览器地址栏输入 about:config 打开配置页面,然后搜索 network.security.ports.banned.override ,将其值设为 6000 即可(如果没有则右键单击新建即可)。

受限端口列表:

端口原因
1tcpmux
7echo
9discard
11systat
13daytime
15netstat
17qotd
19chargen
20ftp data
21ftp access
22ssh
23telnet
25smtp
37time
42name
43nicname
53domain
77priv-rjs
79finger
87ttylink
95supdup
101hostriame
102iso-tsap
103gppitnp
104acr-nema
109pop2
110pop3
111sunrpc
113auth
115sftp
117uucp-path
119nntp
123NTP
135loc-srv /epmap
139netbios
143imap2
179BGP
389ldap
465smtp+ssl
512print / exec
513login
514shell
515printer
526tempo
530courier
531chat
532netnews
540uucp
556remotefs
563nntp+ssl
587stmp?
601??
636ldap+ssl
993ldap+ssl
995pop3+ssl
2049nfs
3659apple-sasl / PasswordServer
4045lockd
6000X11
6665Alternate IRC [Apple addition]
6666Alternate IRC [Apple addition]
6667Standard IRC [Apple addition]
6668Alternate IRC [Apple addition]
6669Alternate IRC [Apple addition]

好了,这就是本文和大家聊的浏览器的一个小小的坑,希望能帮助到经验欠缺的小伙伴。有问题欢迎留言讨论。

最新版 Spring Boot2.1.5 案例:https://github.com/lenve/javaboy-code-samples ,欢迎大家 star。

关注公众号【江南一点雨】,专注于 Spring Boot+微服务以及前后端分离等全栈技术,定期视频教程分享,关注后回复 Java ,领取松哥为你精心准备的 Java 干货!

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐