You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 3.1部署至IIS后DELETE请求被CORS策略拦截如何解决?

排查思路

第一步 确认是否与新安装的npm包相关

  • 回退package.json到安装ngx-saveAs、saveAS之前的版本,删除node_modules和lock文件后重新安装依赖,重启Angular开发服务测试DELETE请求是否恢复正常
    • 若请求恢复正常:说明问题与新包有关,可检查两个包的源码,确认是否存在修改全局XMLHttpRequest、篡改请求头/withCredentials配置、注入全局请求拦截器的逻辑,可更换其他导出文件的依赖包替代
    • 若问题仍存在:说明和新安装的包无关,继续向下排查

第二步 修复后端CORS配置问题

你当前的CORS配置存在多处语法冲突和规则错误:

  • 配置互斥:同时写了WithMethods("GET", "POST", "DELETE", "PUT")和AllowAnyMethod(),二者规则冲突,删掉其中一个即可,建议保留AllowAnyMethod()减少后续方法限制问题
  • 无效Origin规则:CORS的Origin匹配要求必须带完整协议头,192.168.10.82、192.168.10.164这类不带协议的纯IP条目全部无效,直接删除
  • 尾斜杠匹配问题:http://192.168.10.164/、http://192.168.10.163:64534/这类末尾带斜杠的Origin和不带斜杠的实际请求Origin是完全不同的两个地址,删掉所有末尾带斜杠的Origin条目
  • 中间件顺序错误:确认.NET的Configure方法中CORS中间件的注册顺序正确,必须放在路由中间件之后、授权中间件之前,顺序错误会直接导致CORS不生效,正确顺序参考:
app.UseRouting();
// CORS必须放在这个位置
app.UseCors("MyPolicy");
app.UseAuthorization();
app.UseEndpoints(endpoints => { /* 你的端点配置 */ });

第三步 验证请求链路问题

  • 打开浏览器控制台网络面板,查看DELETE请求对应的预检OPTIONS请求的返回状态:如果OPTIONS请求返回404/405,说明服务端未允许OPTIONS方法,需要补充配置支持OPTIONS预检请求
  • 查看OPTIONS请求的响应头,确认是否存在Access-Control-Allow-Origin字段,且值为http://localhost:4200,如果没有则说明CORS配置仍未生效
  • 检查Angular全局请求拦截器,确认是否给DELETE请求额外添加了未被CORS允许的自定义头,或者修改了withCredentials配置
  • 用Postman直接调用该DELETE接口,确认接口本身可正常返回,如果Postman调用也报错,先修复接口本身的业务逻辑问题

内容的提问来源于stack exchange,提问作者Habil Harati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 23:45:01