【问题标题】:Axios not calling localhost APIAxios 没有调用 localhost API
【发布时间】:2021-09-11 01:52:15
【问题描述】:

我有一个 3 层应用程序。 React 作为前端,flask 作为后端,MySQL 作为数据库。我完成了申请,并在当地运作良好。然后我将此代码推送到 AWS 实例以实现高可用性,但出现此错误。

xhr.js:160 POST http://localhost:5000/authenticate net::ERR_CONNECTION_REFUSED

这是我的后端代码库

@app.route('/authenticate', methods=['POST'])
def singing():

if __name__ == "__main__":
    app.run(host='0.0.0.0')

前端:

handleSubmitClose(){
    axios.post('http://localhost:5000/authenticate', {
        "username": this.state.username,
        "password": this.state.password,
      })
      .then((response) => {
        console.log("response of HandleSubmitClose - Main Page")
        console.log(response);

它们都在同一个 ec2 实例和同一个 docker 内。我无法理解即使他们都在同一个实例上,为什么 Axios 无法获取烧瓶主机名或者我在这里遗漏了什么。

技巧: 如果我将 Axios 从 localhost 更改为我的 ec2 公共 IP,它可以工作。但这不是一个好的解决方案,因为我将此实例放入自动缩放组中,我不知道公共 IP 或者它将是动态的。所以,这个解决方案是不可行的

【问题讨论】:

    标签: javascript reactjs flask axios n-tier-architecture


    【解决方案1】:

    此问题与 Flask 相关,与 Axios 无关。解决问题的方法是将app.run(host='0.0.0.0') 更改为app.run(host='localhost')。否则在调用 HTTP 请求时,将 URL 从 localhost 更改为您的 ec2 公共 IP。

    【讨论】:

    • @im2mado,我从 0.0.0.0 更改为 localhost 但无济于事。我仍然不相信为什么 Axios 没有在内部调用烧瓶主机名。有没有其他办法?
    猜你喜欢
    • 1970-01-01
    • 2018-02-20
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 2019-03-22
    相关资源
    最近更新 更多