【发布时间】: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