Rails路由已明确定义却触发net::ERR_NAME_NOT_RESOLVED报错如何解决
问题原因与解决方法
你遇到的net::ERR_NAME_NOT_RESOLVED报错和Rails路由配置无关,核心是请求的域名格式错误。
根本原因
正确的带端口的服务地址格式为协议://域名:端口,你当前DOMAIN()返回的http://localhost3006缺少了localhost和端口3006之间的冒号,浏览器会把localhost3006整体当做一个未知域名尝试DNS解析,自然解析失败触发该报错。
排查解决步骤
- 首先修改
constants/domain文件中DOMAIN函数的返回值,将http://localhost3006修正为http://localhost:3006,补全端口前的冒号。 - 修正后刷新页面,在浏览器控制台Network标签页确认请求的完整URL为
http://localhost:3006/players/update_or_create,同时确认Rails服务已经在3006端口正常启动。 - 如果修正域名后出现跨域报错,可在Rails项目中引入
rack-corsgem配置跨域规则,允许前端域名访问接口。 - 你也可以在Rails项目根目录执行
rails routes命令,确认players/update_or_create路由已正常注册,返回的POST路由路径和你请求的路径一致即可。
内容的提问来源于stack exchange,提问作者user17306847
相关产品推荐
相关产品推荐

