【发布时间】:2022-11-26 15:21:27
【问题描述】:
我有一个运行在http://localhost:8000/api 的 REST API 后端,我的 Angular 13 应用运行在http://localhost:4200。自然地,我在尝试查询该后端的任何端点时收到 CORS 错误。
所以我尝试设置 Angular 代理。我添加了文件src/proxy.conf.json,内容如下:
{
"/api": {
"target": "http://localhost:8000",
"secure": false,
"logLevel": "debug"
}
}
之后,我将以下内容添加到angular.json:
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"proxyConfig": "./src/proxy.conf.json"
},
"configurations": {
"production": {
"browserTarget": "photon:build:production"
},
"development": {
"browserTarget": "photon:build:development"
}
},
"defaultConfiguration": "development"
},
(我还在“开发”配置下添加了 proxyConfig 节点,但没有变化。)
现在,当我运行 npm start 并触发 ng serve 时,我在控制台输出中根本看不到代理已设置 - 并且 API 请求仍然收到 CORS 错误。我相信应该有一些控制台输出显示代理已设置,如下所示:
Proxy created: /api -> http://localhost:8080 (I saw this here.)
我不知道为什么这不起作用,这应该很简单。
编辑:这是请求函数本身。
get(url: string) {
return fetch(this.apiUrl + url, {
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
})
.then(response => {
console.log(response);
return response.json();
});
}
此函数接收到的 URL 是正确的,我可以在调试器中看到它。
【问题讨论】:
-
您的应用点击了什么网址,例如
this.httpClient.get(url)? -
我正在使用
fetch()。端点是http://localhost:8000/api/stoerungen。 -
我怀疑(或者我很惊讶)从应用程序中调用的 API 是
localhost- 在这种情况下你不需要代理 -
好吧,我可以在同一链接下使用浏览器调用 API。是什么让您认为我不需要代理?这是一个不同的来源——否则为什么我会收到 CORS 错误?
-
我基于此更新了我的答案