代码之家  ›  专栏  ›  技术社区  ›  Henry Dashwood

收到http://127.0.0.1:8000/net::ERR_CONNECTION_从同一Web服务器上的后端服务获取数据时发生错误

  •  0
  • Henry Dashwood  · 技术社区  · 3 年前

    我有一个在网络服务器上运行的非常简单的应用程序。一些Javascript从FastAPI服务请求一些数据。当我访问该域时,控制台中出现以下错误 GET http://0.0.0.0:8000/ net::ERR_CONNECTION_REFUSED .

    如果我使用ssh连接到Web服务器,我就可以卷曲localhost:8000/并获取数据。

    因此网页存在,后端服务正在运行。但是前端并没有到达后端。有人能解释一下我做错了什么吗?

    <html>
      <head></head>
      <body>
        <h1>RSS Reader</h1>
        <ul id="feeds_list"></ul>
      </body>
      <script>
        const ul = document.getElementById("feeds_list");
    
        const data = fetch("http://127.0.0.1:8000/", {
          method: "GET",
          headers: {
            "Content-Type": "application/json",
            "Access-Control-Allow-Origin": "*",
          },
          mode: "cors",
        })
          .then((data) => {
            return data.json();
          })
          .then((res) => {
            res.forEach((element) => {
              const li = document.createElement("li");
              const a = document.createElement("a");
              a.appendChild(document.createTextNode(element.title));
              a.href = element.link;
              a.setAttribute("target", "_blank");
              li.appendChild(a);
              ul.appendChild(li);
            });
          });
      </script>
    </html>
    
    import json
    from pathlib import Path
    
    import pandas as pd
    from fastapi import FastAPI
    from fastapi.middleware.cors import CORSMiddleware
    
    
    PARENT_DIR = Path(__file__).parent.parent.resolve()
    
    
    app = FastAPI()
    
    app.add_middleware(
        CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"]
    )
    
    
    @app.get("/ping")
    def ping():
        return {"ping": "pong"}
    
    
    @app.get("/")
    def root():
        df = pd.read_csv(f"{PARENT_DIR}/data/latest.csv")
        df.to_json(f"{PARENT_DIR}/data/latest.json", orient="records")
        with open(f"{PARENT_DIR}/data/latest.json") as f:
            data = json.load(f)
            return data
    
    
    if __name__ == "__main__":
        app()
    
    0 回复  |  直到 3 年前
    推荐文章