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

Angular 5调用.NET Core 2.0 API在EDGE浏览器报0未知错误

解决Edge浏览器中Angular5调用.NET Core2.0 API的跨域错误

我来帮你搞定这个Edge特有的跨域问题!其他浏览器正常唯独Edge报错Http failure response for (unknown url): 0 Unknown Error,大概率是Edge在CORS预检请求处理、头信息兼容性上有特殊要求,结合你的场景给你几个排查方向:

1. 补全.NET Core的CORS配置(重点!)

你的配置代码被截断了,大概率是没加完整的允许规则。Edge对预检请求(OPTIONS)的校验比其他浏览器更严格,必须明确允许请求头、方法,必要时还要允许凭证:

services.AddCors(options => {
    options.AddPolicy("AllowAllOrigins", builder => {
        builder.AllowAnyOrigin()
               .AllowAnyHeader()  // 必须加,否则预检请求的自定义头会被拦截
               .AllowAnyMethod()  // 允许所有HTTP方法
               .AllowCredentials(); // 如果你的请求带Cookie、认证信息,必须加这个
    });
});

注意中间件顺序:一定要在app.UseMvc()之前启用CORS,否则请求会先被Mvc处理,CORS规则不生效:

public void Configure(IApplicationBuilder app)
{
    // 先启用CORS
    app.UseCors("AllowAllOrigins");
    // 再启用Mvc
    app.UseMvc();
}

2. 检查预检请求(OPTIONS)的状态

打开Edge开发者工具(F12)切换到「网络」标签,重新触发请求,找对应的OPTIONS请求:

  • 如果OPTIONS请求返回404/500,说明.NET Core的路由或中间件拦截了这个请求,要确保API没有禁用OPTIONS方法,或者没有其他中间件(比如认证中间件)在CORS之前拦截了它。
  • 如果OPTIONS请求返回200,但响应头里没有Access-Control-*相关字段,说明CORS策略没正确生效,回到第一步检查配置和中间件顺序。

3. 排查Edge的特殊限制

  • 凭证与通配符冲突:如果你的请求带了Cookie或认证信息,Edge不允许Access-Control-Allow-Origin: *和AllowCredentials同时存在。这时候要把AllowAnyOrigin()改成指定具体的Angular应用地址:
    builder.WithOrigins("http://localhost:4200") // 替换成你的Angular实际地址
           .AllowAnyHeader()
           .AllowAnyMethod()
           .AllowCredentials();
    
    同时Angular请求要开启withCredentials:
    this.http.get(apiUrl, { withCredentials: true });
    
  • Edge版本问题:如果是旧版Edge(非Chromium内核),可能存在CORS相关的已知bug,建议升级到Chromium版Edge试试,或者针对旧版调整请求头,比如避免使用一些Edge不兼容的自定义头。

4. 检查Angular请求的兼容性

确保Angular的Http请求没有使用Edge不支持的特性:

  • 避免在URL中使用中文、空格等特殊字符,确保URL已正确编码。
  • 如果用了HttpClient的拦截器,检查是否添加了Edge无法识别的请求头。

内容的提问来源于stack exchange,提问作者Ranjit Krishnan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:55:22