【问题标题】:Angular8: Call localhost Rest Api servicesAngular8:调用 localhost Rest Api 服务
【发布时间】:2019-08-18 15:04:52
【问题描述】:

我使用 Angular 8 开发了我的 Web 应用程序。后端是我使用 django rest 框架开发的一个 rest api,它只能在 localhost 中查看。我测试了它,它工作正常。例如服务http://127.0.0.1:8000/api/devices 给出了设备列表。如果我使用浏览器或 curl 命令对其进行测试,它会给出很好的结果。 我正在从我的 Angular 应用程序中调用此服务。我使用以下命令执行了 Angular 应用程序:ng serve --host 0.0.0.0 --port 4201

如果我在浏览器中使用 http://127.0.0.1:4201/api/devices 打开 Web 应用程序,则服务 /api/devices 会被很好地调用,并且我会在我的网页中获得设备列表。但是如果我使用我的 LAN IP 地址打开 Web 应用程序,例如 http://192.168.1.59:4201/api/devices,那么我的控制台中会出现 HTTP 400 bad request 错误。

同样的错误显示在 django 服务器跟踪中:GET /api/devices/ HTTP/1.1" 400 26

在互联网上进行了一些搜索后,我得出结论,此错误经常来自 Angular 应用程序,尤其是代理: 我的代理配置文件 proxy.config.json 是:

{
    "/api" : {
        "target": "http://localhost:8000",
        "secure": false
  }
}

我疯狂地进行其他搜索,并找到了类似问题 Angular 6 call localhost API 的答案,在遵循“代理到后端服务器”部分中的角度文档 https://angular.io/guide/build 之后,我将代理配置文件修改为:

{
  "/api": {
    "target": "http://localhost:8000",
    "secure": false,
    "pathRewrite": {
      "^/api": ""
    }
  }
}

有没有人知道问题的主要原因是什么?以及如何解决?

【问题讨论】:

    标签: django angular proxy http-error bad-request


    【解决方案1】:
       ng serve --host 0.0.0.0 --port 4201 --disable-host-check
    

    【讨论】:

      猜你喜欢
      • 2021-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-18
      • 2017-11-11
      • 2020-02-08
      • 2018-11-09
      • 2019-05-02
      相关资源
      最近更新 更多