浏览器访问接口出现net::ERR_CONNECTION_REFUSED

本文解析了127.0.0.1、0.0.0.0及本机IP的作用与区别,阐述了它们在网络配置中的意义,并提到了特定端口的安全限制。

在一次浏览器访问 http://0.0.0.0:1/JMDD 请求地址时,出现了net::ERR_CONNECTION_REFUSED,然而postman访问却是正常的,主要有以下原因:

原因①:0.0.0.1是特殊的ip

localhost(127.0.0.1)、0.0.0.0、当前主机IP这三个,这三个地址分别代表了什么?

   ① 127.0.0.1,172.0.0.1是回送地址,localhost是本地DNS解析的127.0.0.1的域名,在hosts文件里可以看到。

一般我们通过ping 127.0.0.1来测试本地网络是否正常。其实从127.0.0.1~127.255.255.255,这整个都是回环地址。这边还要

注意的一点就是localhost在了IPV4的是指127.0.0.1而IPV6是指::1。当我们在服务器搭建了一个web服务器的时候如果我们

监听的端口时127.0.0.1:端口号 的 时候,那么这个web服务器只可以在服务器本地访问了,在别的地方进行访问是不行的。

(127.0.0.1只可以在本地ping自己的,那么你监听这个就只可以在本地访问了)

  ②0.0.0.0,如果我们直接ping 0.0.0.0是不行的,他在IPV4中表示的是无效的目标地址,但是在服务器端它表示

本机上的所有IPV4地址,如果一个服务有多个IP地址(192.168.1.2和10.1.1.12),那么我们如果设置的监听地址是0.0.0.0那

么我们无论是通过IP192.168.1.2还是10.1.1.12都是可以访问该服务的。在路由中,0.0.0.0表示的是默认路由,即当路由表中

没有找到完全匹配的路由的时候所对应的路由。

③本地IP, 如果我们监听的是IP的话那么只有通过监听的IP才可以访问我们的对应的服务。

原因②:1是非安全端口列表

  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
  465,  // smtp+ssl
  512,  // print / exec
  513,  // login
  514,  // shell
  515,  // printer
  526,  // tempo
  530,  // courier
  531,  // chat
  532,  // netnews
  540,  // uucp
  556,  // remotefs
  563,  // nntp+ssl
  587,  // stmp?
  601,  // ??
  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]

 chrome有词限制,Firefox也有类似的端口限制;如果非要使用类似的端口,可通过修改浏览器配置

--explicitly-allowed-ports=87,6666,556,6667

虽然以上方法可以解决问题,但建议尽量避免以下端口:

### 解决 `net::ERR_CONNECTION_REFUSED` 错误的原因及方案 #### 一、错误原因分析 当遇到 `net::ERR_CONNECTION_REFUSED` 错误时,通常意味着客户端尝试建立与服务器的连接遭到拒绝。可能的原因包括但不限于: - **服务未启动**:目标服务器或特定的服务进程并未处于运行状态[^1]。 - **端口冲突或占用**:所使用的端口号已被其他应用占用,导致无法正常监听该端口[^2]。 - **防火墙阻止**:本地或远程主机上的防火墙配置不当,拦截了入站/出站流量[^5]。 - **网络设置问题**:DNS解析失败、代理配置不正确或是IP地址变动等因素也可能引发此类错误[^4]。 #### 二、具体场景下的排查建议 对于基于 jQuery 和 Python 的 Web 应用程序,在执行 PUT 请求时报此错误的情况,可以从以下几个方面着手检查并解决问题: ##### (一)确认后端服务可用性 确保 Python 后端已成功部署并且能够响应 HTTP 请求。可以通过命令行工具如 curl 或 Postman 测试 API 接口是否可以访问。如果这些工具也无法获取预期的结果,则说明问题是出自于服务器本身而非前端代码[^3]。 ##### (二)验证URL路径准确性 仔细核对发送请求的目标 URL 是否拼写无误,并且指向正确的 IP 地址和端口号。特别是当涉及到跨域资源共享(CORS)的情况下,还需要注意域名匹配规则。 ##### (三)调整浏览器同源政策(SOP) 由于现代浏览器默认实施严格的 SOP 来保护用户隐私安全,因此可能会阻碍来自不同来源的数据交换。可以在开发环境中临时放宽 CORS 设置以便调试;而在生产环境则应遵循最佳实践来实现安全可靠的通信机制。 ##### (四)审查中间件配置 某些情况下,即使前后端在同一台机器上运行也会因为反向代理或其他类型的网关的存在而出现问题。此时应当查看 Nginx/Apache 等 web server 中间件的日志文件寻找线索,并适当修改其配置参数以适应当前的应用架构需求。 ##### (五)考虑使用 WebSocket 协议替代传统HTTP长轮询 鉴于题目提到曾尝试过 websocket 方式却同样遭遇连接失败的情形,这里提醒开发者关注一下 ws(s):// 前缀下实际对应的物理位置是否可达以及 SSL/TLS 加密证书的有效期等问题。 ```javascript // 使用WebSocket协议的一个简单例子 const socket = new WebSocket('ws://localhost:8080'); socket.onopen = function () { console.log('Connection established.'); }; ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值