【问题标题】:.NET Core CORS policy block.NET Core CORS 策略块
【发布时间】:2020-11-02 11:52:53
【问题描述】:

iis服务器上有两个应用,一个是和前端反应,一个是后端。 web api 作为子域工作。例如,api.mydomain.com。

当我从前端发送 Web api 请求时,出现以下错误。

在“https://api.mydomain.com/api/auth/login”访问 XMLHttpRequest 来自原点“https://.mydomain.com”已被 CORS 策略阻止: 对预检请求的响应未通过访问控制检查:否 请求中存在“Access-Control-Allow-Origin”标头 资源。

        services.AddCors(options =>
        {
            options.AddPolicy("AllowOrigin",
                builder => builder.WithOrigins("https://*.mydomain.com").AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader().AllowCredentials());
        });

app.UseCors("AllowOrigin");

我是否需要更改 IIS 设置,我应该在哪里更改?

解决方案:

  1. 首先,将 web config 中的所有 cors 设置设置为“*”。
  2. 其次,从 plesk 面板关闭 modsecurity。

【问题讨论】:

  • 没人能帮忙吗?我解决不了问题
  • 我认为问题在于您的网络 API 不知道如何为预检请求返回 20 倍响应。因此,您需要修改代码以允许 OPTION 返回正确的响应。
  • @JokiesDing 我发现了问题,问题是plesk面板中的modsecurity被打开了。

标签: c# asp.net-core iis cors asp.net-core-webapi


【解决方案1】:

如果您在 IIS 上托管 Web 应用程序,您还需要让 IIS 了解 cors 策略。

您必须按照此处的说明编辑您的网络配置:

https://enable-cors.org/server_iis7.html

【讨论】:

  • 出现此错误 --> 对预检请求的响应未通过访问控制检查:它没有 HTTP ok 状态。
【解决方案2】:

在 2.0.0 版本中实现

options.AddPolicy("MyCorsPolicy",
       builder => builder
          .SetIsOriginAllowedToAllowWildcardSubdomains()
          .WithOrigins("https://*.mydomain.com")
          .AllowAnyMethod()
          .AllowCredentials()
          .AllowAnyHeader()
          .Build()
       );
    app.UseCors("MyCorsPolicy");

https://docs.microsoft.com/fr-fr/dotnet/api/microsoft.aspnetcore.cors.infrastructure.corspolicybuilder.setisoriginallowedtoallowwildcardsubdomains?view=aspnetcore-2.2

【讨论】:

猜你喜欢
  • 2020-05-22
  • 2020-04-06
  • 2017-10-14
  • 2019-07-01
  • 2021-07-31
  • 1970-01-01
  • 2020-07-09
  • 2019-05-25
  • 2021-01-19
相关资源
最近更新 更多