asp.net-core - 为什么当我从客户端发送请求时出现 CORS 策略错误?
问题描述
我从 Angular 项目向 web api .net cor 2.2 发送了请求。
我得到这个错误:
Access to XMLHttpRequest at 'http://localhost/fridge/api/FridgeType/3'
from origin 'http://localhost:4200' has been blocked by CORS policy:
Response to preflight request doesn't pass access control check: It does not have HTTP ok status.
这是我的 web api .net cor 2.2 中的 web.config 文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS" />
<add name="Access-Control-Allow-Credentials" value="true" />
</customHeaders>
</httpProtocol>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" arguments="-argFile IISExeLauncherArgs.txt" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
</system.webServer>
</configuration>
知道是什么原因导致上述错误吗?
解决方案
我从ASP.NET Core DOC那里得到了一个解释,R. Richards 也提到了它作为评论
浏览器安全性可防止网页向与提供该网页的域不同的域发出请求。这种限制称为同源策略。同源策略可防止恶意站点从另一个站点读取敏感数据。有时,您可能希望允许其他网站向您的应用发出跨域请求。有关详细信息,请参阅Mozilla CORS 文章。
我能够通过使用来修复它
app.UseCors(x => x.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin().AllowCredentials());
在类似下面的代码的Configure
方法中。Startup.cs
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseCors(x => x.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin().AllowCredentials());
app.UseHttpsRedirection();
app.UseMvc();
}
推荐阅读
- linux - Goaccess,格式错误 - 验证您的日志/日期/时间格式
- flask - 如何使用带有 mongodb 的烧瓶对列表进行排序?
- amazon-web-services - Websockets 不适用于 AWS ElasticBeanstalk 部署
- selenium - 向 selenium-standalone NPM 库提供配置文件
- c# - 如何在 Visual Studio 中重命名 WPF 窗口文件?
- r - Sparklyr - 在 spark-submit 中更改日志级别
- laravel - hasMany 关系返回 null 与 mongodb (jenssegers) laravel
- c# - 使用串口windows 10的蓝牙通信
- python - Django 迁移已应用,但我没有迁移文件
- telegram - Python电报机器人,转发编辑的消息