Angular中Fetch API返回304 Not Modified问题求助
排查Angular调用.NET API失效(后端对象结构变更后)
先给你的fetch代码补上错误捕获逻辑,先确认是请求异常还是JSON解析失败:
fetch(URL) .then(response => { // 先校验HTTP状态码 if (!response.ok) { throw new Error(`请求失败!状态码: ${response.status}`); } return response.json(); }) .then(data => { console.log(data); }) .catch(error => { console.error('请求或解析出错:', error); });
接下来按以下方向逐一排查:
- 检查后端返回的JSON合法性:在浏览器开发者工具的Network标签里,直接查看API返回的Response内容,确认是不是标准JSON格式。后端改结构后容易出现循环引用、未正确序列化的类型(比如.NET里未配置的DateTime、匿名类),导致前端解析失败。
- 对齐前后端数据结构定义:如果前端用了TypeScript接口约束接收数据,后端修改字段名、类型(比如数字转字符串、可选字段变必填)后,会导致数据无法正常映射。把前端接口和后端新的对象结构逐一比对,修正不匹配的地方。
- 验证CORS配置:后端调整结构时可能误改了CORS策略(比如允许的请求头、方法范围),查看Network里的Response Headers,确认
Access-Control-Allow-Origin等字段是否符合预期,有没有CORS相关报错。 - 检查.NET序列化配置:如果后端切换了序列化库(比如Newtonsoft.Json和System.Text.Json),或者修改了序列化选项(比如大小写转换、null值处理),会导致前端拿到的字段名和预期不符(比如后端返回
UserName,前端预期userName)。去Startup/Program.cs里核对序列化配置,确保和前端字段命名规则一致。 - 排查Angular拦截器:如果项目里有HTTP拦截器,可能对旧数据结构有依赖,后端改结构后拦截器处理失败导致数据无法传递。暂时禁用拦截器测试,看请求是否恢复正常。
内容的提问来源于stack exchange,提问作者Jcide
相关产品推荐
相关产品推荐

