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

ASP.NET Framework+Angular18删除数据时遭遇CORS预检请求错误

解决ASP.NET Framework + Angular 18 删除操作CORS预检错误问题

核心问题:OPTIONS 预检请求未返回 200 OK

GET请求能正常执行,但DELETE属于非简单请求,浏览器会先发送OPTIONS预检请求,你的后端未正确处理该请求才导致报错。

1. 给OPTIONS请求直接返回200

在Global.asax的Application_BeginRequest方法中添加以下代码,确保OPTIONS请求直接通过:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    if (Request.HttpMethod == "OPTIONS")
    {
        Response.StatusCode = 200;
        Response.End();
    }
}

这段代码要放在其他CORS相关逻辑之前,避免被后续代码拦截。

2. 修正web.config的CORS配置

确保配置包含OPTIONS和DELETE方法,同时允许必要的请求头:

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="Access-Control-Allow-Origin" value="*" />
      <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
      <add name="Access-Control-Allow-Headers" value="Content-Type, Authorization" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

如果前端请求带有自定义头,要把对应的头添加到Access-Control-Allow-Headers中。

3. 排查路由和权限拦截

  • 确认DELETE接口的路由配置正确,避免OPTIONS请求被路由规则误拦截。
  • 如果使用了权限验证(比如Forms认证),要跳过OPTIONS请求的权限校验,否则预检请求会返回401/403状态码,引发报错。

4. 检查Angular代理配置细节

如果使用proxy.config.json,确保配置覆盖DELETE方法,路径匹配准确:

{
  "/api/*": {
    "target": "http://你的后端地址",
    "secure": false,
    "logLevel": "debug",
    "changeOrigin": true,
    "headers": {
      "Connection": "keep-alive"
    }
  }
}

启动项目时必须指定代理配置:ng serve --proxy-config proxy.config.json

5. 用浏览器工具验证请求

打开浏览器开发者工具的Network面板,找到OPTIONS请求,查看它的响应状态码和响应头,确认是否返回200,以及CORS相关头是否正确返回。

内容的提问来源于stack exchange,提问作者Ahmed ismaiel el shaer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 09:02:15