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 设置:
- 具有 Public 访问策略的 S3 存储桶
- 带有行为白名单的 Cloudfront Headers
.netcore web api 设置:
- 带有 Windows Server 2019
的 EC 2 实例
- 带有以下 httpresponse headers 的 IIS 10 网站添加了 SSL 实现
- 根据需要,我在 .net 核心应用程序中添加了 CORS 策略,如下所示
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。
仍然不确定确切的问题是什么。
我在通过浏览器 (chrome/Edge/Firefox/Opera) 访问 Angular 应用程序时遇到以下错误。 API 请求适用于通过 Postman/Fiddler.
的直接调用所以我认为 Cloudfront 和 EC2 调用与 CORS 策略之间存在一些问题
以下是我的设置。
Angular 设置:
- 具有 Public 访问策略的 S3 存储桶
- 带有行为白名单的 Cloudfront Headers
.netcore web api 设置:
- 带有 Windows Server 2019 的 EC 2 实例
- 带有以下 httpresponse headers 的 IIS 10 网站添加了 SSL 实现
- 根据需要,我在 .net 核心应用程序中添加了 CORS 策略,如下所示
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。
仍然不确定确切的问题是什么。