.NET Core CORS 策略块
Posted
技术标签:
【中文标题】.NET Core CORS 策略块【英文标题】:.NET Core CORS policy block 【发布时间】: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 设置,我应该在哪里更改?
解决方案:
-
首先,将 web config 中的所有 cors 设置设置为“*”。
其次,从 plesk 面板关闭 modsecurity。
【问题讨论】:
没人能帮忙吗?我解决不了问题 我认为问题在于您的网络 API 不知道如何为预检请求返回 20 倍响应。因此,您需要修改代码以允许 OPTION 返回正确的响应。 @JokiesDing 我发现了问题,问题是plesk面板中的modsecurity被打开了。 【参考方案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
【讨论】:
"Voodoo programming refers to the practice of getting a program to produce desired output by using guesses, trial-and-error, cookbooks, copy-pasting from online resources, or similar techniques without truly understanding the underlying problem"。解释这段代码的作用以及为什么 OP 应该使用它。 对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。不工作。以上是关于.NET Core CORS 策略块的主要内容,如果未能解决你的问题,请参考以下文章
仅在文件上传中出现 Asp.Net Core API CORS 策略错误
C# Net Core:在 API 中启用 Cors 后,仍处于 CORS 策略阻止状态
.Net Core 仅在上传文件时被 CORS 策略错误阻止