原生.js代码无法解析localhost但Postman请求可正常调用是什么原因
本地接口Postman可调用但Node.js环境无法解析localhost的常见原因
- IPv6解析优先级问题
大部分Node.js版本默认优先解析域名的IPv6记录,对应你hosts中配置的::1 localhost,如果你的接口服务仅监听了IPv4的127.0.0.1:500,没有监听IPv6的::1:500,就会出现连接失败。Postman默认优先尝试IPv4地址,所以可以正常调用。 - hosts文件读取权限不足
如果你执行npm脚本时使用了sudo等提权操作,或者当前运行Node.js进程的用户没有系统hosts文件的读取权限,会导致无法读取localhost的映射配置,解析失败。 - 代理配置冲突
检查你的项目npm配置、Node.js全局配置或者代码内部是否设置了代理规则,请求被强制走代理的情况下,代理服务无法解析本地localhost地址也会触发报错。 - 请求地址配置错误
确认代码中的请求地址拼写和Postman完全一致,包括端口是否为500(注意不要和常见的5000端口混淆)、路径是否正确,拼写错误也会出现类似无法访问的报错。
你可以先将代码中的请求地址localhost替换为127.0.0.1测试,如果可以正常调用,即可确认是IPv6优先级导致的问题,可通过调整Node.js DNS解析规则,或者让接口服务同时监听IPv4和IPv6的500端口解决。
内容的提问来源于stack exchange,提问作者rACkle
相关产品推荐
相关产品推荐

