首页 > 解决方案 > 即使在设置 CORS 后,请求的资源上也没有“Access-Control-Allow-Origin”标头

问题描述

我受够了 .NET Core Web API 应用程序中的 CORS 错误。我已经做了所有我相信的设置。

这是我所做的

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddCors();
        services.AddControllers();

    }
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        app.UseCors(options =>
            options.WithOrigins("http://localhost:4200/")
            .AllowAnyMethod()
            .AllowAnyHeader()
            .AllowAnyMethod());
        //app.UseCors(builder => builder
        //            .AllowAnyOrigin()
        //            .AllowAnyMethod()
        //            .AllowAnyHeader()
        //            .AllowCredentials());
        app.UseHttpsRedirection();

        app.UseRouting();

    }

即使现在它触发了以下错误

从源“ http://localhost:4200 ”访问“ https://localhost:44331/api/kip ”处的 XMLHttpRequest已被 CORS 策略阻止:没有“Access-Control-Allow-Origin”标头出现在请求的资源。

我从 Angular 调用它

这是我的调用脚本

  getProjects() {
    let url:string=this.isServer?"http://localhost:51071/webservice1.asmx":"https://localhost:44331";
    console.info(url);
    return this.client.get(url+'/api/kip', {
      withCredentials: true,
      responseType: 'json'
    });
  }

此外,我在返回之前在 API 的最后一行设置了一个断点,它到达那里没有任何问题。所以在调用 return 之后它会触发错误。我还单独尝试了返回 JSON 的 API。

这是我的控制器。

    // GET: api/Kip
    [HttpGet]
    public KipProjects Get()
    {
        KipProjects proj = new KipProjects();
        kip keyedin = new kip();
        proj=keyedin.getKeyedinReport();

        return proj;
    }

标签: angularasp.net-coreasp.net-web-api

解决方案


请参考文档

注意:指定的 URL 不能包含尾部斜杠 (/)。如果 URL 以 / 结尾,则比较返回 false 并且不返回标头。

所以尝试options.WithOrigins("http://localhost:4200")


推荐阅读