【问题标题】:How can I get rid of CORs errors completely in my .Net Core Web API?如何在我的 .Net Core Web API 中完全消除 CORs 错误?
【发布时间】:2020-12-11 02:32:16
【问题描述】:

我在使用 .Net Core 3.1 的 IIS 服务器上有一个 Web api。

它正在使用http://68.181.207.10:8473的IP和端口

我还有 3 个 Web 应用程序在同一个 IIS 服务器上运行。其中 2 个应用是 .Net 4.7 应用,1 个是 .Net Core 应用。

这 3 个 web 应用程序都使用 web api。

这 3 个应用是:

https://meta.astro.usc.edu(端口 443)

http://old.astro.perl.edu(80 端口)

http://68.181.207.10(80 端口)

我已将 API 设置为使用 COR,在大多数情况下,一切正常,它们连接到 API 没有任何问题。

但有时即使我添加了所有需要的 URL,我仍然会遇到 COR 错误。

在我的 ConfigureServices 方法的顶部,我添加了需要访问的 URL,如下所示:

public void ConfigureServices(IServiceCollection services)
{

    services.AddCors(options =>
    {
        options.AddPolicy(MyAllowSpecificOrigins,
        builder =>
        {
            builder.WithOrigins("http://68.181.207.10:8473", "https://meta.astro.usc.edu", "http://old.astro.perl.edu", "http://68.181.207.10")
                   .AllowAnyMethod()
                   .AllowAnyHeader();
        });
    });
    
    
}

然后在我的配置方法中,我添加app.UseCors,如下所示:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseHsts();
    }
    app.UseRouting();
    app.UseCors(MyAllowSpecificOrigins);
    app.UseHttpsRedirection();
    app.UseMvc();
}

这是允许这些其他网络应用连接到我的网络 api 的正确方法吗?

CORs 错误似乎是随机的,其来源始终是我的 3 个网络应用程序之一。一个似乎不会导致比另一个更多的错误。

如何防止我仍然收到间歇性 CORs 错误?

谢谢!

【问题讨论】:

  • 你写The CORs errors seem random and the origins are always one of my 3 web apps. One doesn't seem to cause more errors than an another.。但是您在 WithOrigins 中指定了 4 个站点。我怀疑这里有 http/https 问题。我还看到app.UseHttpsRedirection(); 在文档中出现在app.UseCors 之前,也许也可以看看。
  • @RoarS。我添加了http://68.181.207.10:8473,这是 Web api 本身的 URL。出于绝望,我添加了它……但它似乎并没有任何帮助。
  • OPTIONS 请求是预检请求。请查找未返回 2XX 的请求。
  • 这些请求已通过,应视为应用错误。因此,您可能根本没有任何 CORS 错误。
  • 您还需要安装 IIS CORS 模块以进行安装和配置,docs.microsoft.com/en-us/iis/extensions/cors-module/… 以在 IIS 处理 CORS 请求时正确处理边缘情况,而不是您的 ASP.NET Core Web 应用程序。

标签: asp.net-core iis entity-framework-core asp.net-core-webapi .net-core-3.1


【解决方案1】:

检查有问题的请求中的内部服务器错误 (500)

【讨论】:

    【解决方案2】:

    在与 OP 讨论后,在 OP 在日志中发现 4XX 错误后,此问题可能根本与 CORS 无关。

    【讨论】:

    • 我不明白的是,为什么 4XX 错误会导致 CORs 错误显示在浏览器控制台中?谢谢
    • 如果您确定存在 CORS 错误,您仍然需要检查日志。请问您的 CORS 错误的来源是什么?
    猜你喜欢
    • 2021-07-31
    • 2020-09-07
    • 2019-01-24
    • 2020-03-04
    • 2018-12-09
    • 2022-07-05
    • 2020-08-27
    • 2019-10-03
    • 2021-09-03
    相关资源
    最近更新 更多