我用Angular 8开发了我的web应用程序,后端是我用django rest框架开发的rest api,它只能在本地主机上查看。我测试了它,它工作得很好。例如,服务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调用良好,并且在我的web页面中会得到设备列表。但是如果我用我的局域网IP地址打开web应用程序,比如http://192.168.1.59:4201/api/devices,那么我在控制台上就会收到HTTP 400 bad request错误。

django server traces中也显示了同样的错误:GET /api/devices/ HTTP/1.1" 400 26
在互联网上搜索后,我得出结论,这个错误经常来自angular应用程序,特别是代理:我的代理配置文件proxy.config.json是:
{
"/api" : {
"target": "http://localhost:8000",
"secure": false
}
}我进行了其他搜索,我找到了类似问题Angular 6 call localhost API的答案,在遵循了“代理到后端服务器”一节中的angular文档https://angular.io/guide/build之后,我将代理配置文件修改为:
{
"/api": {
"target": "http://localhost:8000",
"secure": false,
"pathRewrite": {
"^/api": ""
}
}
}有没有人知道问题的主要原因是什么?我该如何修复它呢?
发布于 2019-08-19 00:09:49
ng serve --host 0.0.0.0 --port 4201 --disable-host-checkhttps://stackoverflow.com/questions/57545773
复制相似问题