ASP.NET Core+Angular代理配置异常:自定义API无法转发
解决ASP.NET Core + Angular代理配置失效问题
1. 修正proxy.config.js配置
使用如下标准配置,确保请求正确转发到后端:
const PROXY_CONFIG = [ { context: ['/api'], target: 'https://localhost:7010', changeOrigin: true, secure: false, logLevel: 'debug' } ]; module.exports = PROXY_CONFIG;
context: ['/api']:匹配所有以/api开头的请求,无需额外正则符号changeOrigin: true:必须开启,避免后端因Origin不匹配拒绝请求secure: false:本地开发时后端用自签HTTPS证书需开启此项logLevel: 'debug':开启日志便于排查代理是否生效
2. 确保Angular启动时加载代理配置
修改package.json中的启动脚本,明确指定代理配置文件:
"scripts": { "start": "ng serve --proxy-config proxy.config.js" }
启动项目时必须通过这个脚本启动,否则代理配置不会被加载。
3. 修正前端请求代码
请求URL使用相对路径,且保持路由大小写与后端一致:
// 正确写法 this.http.get('/api/Products/GetAllProducts').subscribe(response => { // 处理响应 });
避免使用带端口的绝对路径(如https://127.0.0.1:4200/Api/Products/GetAllProducts),否则请求会直接发送到Angular服务端口,而非经过代理转发。同时注意路由大小写,Kestrel默认对URL大小写敏感,确保前端请求的/api与后端路由一致。
4. 验证代理生效状态
启动Angular项目后,查看控制台日志:
- 若看到
[HPM] Proxy created: /api -> https://localhost:7010,说明代理已成功创建 - 发送请求时若出现
[HPM] Rewriting path from "/api/Products/GetAllProducts" to "/api/Products/GetAllProducts",说明请求已被代理转发
当前问题本质是代理未生效,导致前端请求直接打到Angular的4200端口,返回的是项目的index.html文件。按上述步骤逐一排查,即可解决API调用失败的问题。
内容的提问来源于stack exchange,提问作者julianuslemurrex
相关产品推荐
相关产品推荐

