【发布时间】:2021-07-01 23:04:56
【问题描述】:
我有一个 node.js express 服务器在端口 7070 上托管我的 API。我有一个 Flask 服务器在端口 5000 上托管我的网页。我可以使用带有 curl http://localhost:7070/latest 的 curl 从服务器访问我的 API,API 返回结果成功地。在我的网络服务器上,我尝试使用 getJSON 调用 API,但它仅在我将 localhost 替换为服务器本地 IP 时才有效。
如果我尝试使用带有 http://127.0.0.1:7070/latest 或 http://localhost:7070/latest 的 localhost 访问我的 API,则创建一个 net::ERR_CONNECTION_REFUSED 会在 chrome 中引发错误。
如果我将 localhost 更改为我的本地 IP 192.168.68.72 for http://192.168.68.72:7070/latest,它可以正常工作。我需要使用 localhost,因为我的应用程序是自托管的,因此无法硬链接 URL。
我在这里做错了什么,我已经搜索了以前的问题并检查了端口是否打开netstat -tnlp
我需要用其他方式连接到同一台服务器,但使用不同的端口而不是本地主机吗?
谢谢
【问题讨论】:
-
getJSON听起来像 jQuery?这意味着您从浏览器内部请求 API,这意味着localhost指的是运行您的浏览器的计算机,即您坐在前面的机器,而不是 Pi。解决此问题的一种方法是通过您的烧瓶服务器发出 API 请求,例如使用/api/latest之类的路由,并让烧瓶将/api请求转发到 7070 服务器。 -
@ChrisG 是的 getJSON 是 jQuery,我想可能是这种情况,我会考虑通过 Flask 来做,你有任何链接或任何替代方法吗?
-
"//" + location.host + ":7070/latest"也应该可以工作 -
@ChrisG 尝试访问 http//192.168.68.72:5000:7070/latest,我该如何摆脱网络服务器的 :5000 端口?
-
location.host.split(':')[0]应该这样做
标签: javascript node.js express