CORS 问题:Angular 5 on AWS S3 & Cloudfront 和 .net core webapi on IIS10 EC 2 windows server 2019

CORS issue: Angular 5 on AWS S3 & Cloudfront and .net core webapi on IIS10 EC 2 windows server 2019

我在通过浏览器 (chrome/Edge/Firefox/Opera) 访问 Angular 应用程序时遇到以下错误。 API 请求适用于通过 Postman/Fiddler.

的直接调用

所以我认为 Cloudfront 和 EC2 调用与 CORS 策略之间存在一些问题

以下是我的设置。

Angular 设置:

.netcore web api 设置:

    services.AddCors(options =>
            {
                options.AddPolicy("EnableCORS", builder =>
                {
                    builder.AllowAnyOrigin()
                        .AllowAnyHeader()
                        .AllowAnyMethod()
                        .AllowCredentials();
                });
            });

添加了 CORS 中间件

     app.UseCors("EnableCORS");

已在 APi 控制器上添加了必需的注释

     [EnableCors("EnableCORS")]

不确定我在这个设置中遗漏了什么。

您的 api 似乎配置为发送 CORS headers。

但您的 API 似乎没有配置为处理 HTTP OPTIONS Verb 请求。浏览器通过发送 OPTIONS 请求来发送 prelight 请求。

我之所以这么说,是因为您在执行 OPTIONS 请求时收到 405 Method not allowed。

希望这对您有所帮助。

我在 .netcore 代码和 IIS 中对 CORS 的设置进行了一些更改,终于让它工作了。以下是更改。

  • 将我的应用程序从 .netcore 2.2 升级到 3.0
  • 我将 CORS Origion 策略从 AllowAnyOrigion() 更改为 WithOrigins("https://xxx.xxxx.com")
  • 从 IIS 10 网站删除了 IIS CORS 模块。
  • 已从 IIS HTTP 响应中删除所有 CORS headers Headers

总结一下,我没有尝试从 IIS 管理 CORS headers,而是留给了 Kestral。

仍然不确定确切的问题是什么。