Angular v16.1.0代理未重写HTTPS请求,报404及WebPack日志求助
解决Angular代理不重写JSON请求的问题
1. 调整代理配置文件
问题根源是Angular代理默认的headersAcceptFilter会过滤掉Accept头包含application/json的请求,导致不转发。修改proxy.conf.js,添加headersAcceptFilter: ''禁用这个过滤规则:
const PROXY_CONFIG = [ { context: ['/api'], target: 'https://localhost:44303', secure: false, // 后端用自签HTTPS证书时需设为false changeOrigin: true, logLevel: 'verbose', headersAcceptFilter: '' // 关键:取消Accept头过滤,允许JSON请求被代理 } ]; module.exports = PROXY_CONFIG;
2. 确认代理配置已加载
检查angular.json的serve配置,确保已指定代理文件:
"serve": { "builder": "@angular-devkit/build-angular:dev-server", "options": { "browserTarget": "你的项目名:build", "proxyConfig": "proxy.conf.js" } }
如果用命令行启动,确保加上参数:ng serve --proxy-config proxy.conf.js
3. 修正HttpClient请求路径
组件里的请求必须用相对路径,不能写完整域名,否则会绕过代理:
// 正确写法 this.http.get('/api/account/user').subscribe(res => { // 处理响应 }); // 错误写法(直接访问前端端口,不会走代理) // this.http.get('https://localhost:44498/api/account/user').subscribe(...)
4. 验证代理生效
重启Angular开发服务器,查看控制台日志,如果出现Rewriting GET /api/account/user to https://localhost:44303/api/account/user的提示,说明代理已正常工作,此时浏览器请求会被正确转发到后端端口。
内容的提问来源于stack exchange,提问作者Jeff Davies
相关产品推荐
相关产品推荐

