C# 从源站访问的xmlhttprequest已被cors策略在6中阻止

C# 从源站访问的xmlhttprequest已被cors策略在6中阻止,c#,angular,asp.net-core,aspnetboilerplate,C#,Angular,Asp.net Core,Aspnetboilerplate,我正在服务器端项目中使用Asp.Net核心样板框架角度6用于客户端项目。服务器端项目正常工作,没有任何错误。(展示了招摇过市的API——而且API也在工作) 角度项目没有任何编译错误。当使用Google chrome()运行angular项目时,它会显示以下错误消息 浏览器控制台显示以下内容:- 从源代码访问“”处的XMLHttpRequest “”已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查: 请求的资源上不存在“Access Control Allow Origin”标头 单

我正在服务器端项目中使用Asp.Net核心样板框架角度6用于客户端项目。服务器端项目正常工作,没有任何错误。(展示了招摇过市的API——而且API也在工作)

角度项目没有任何编译错误。当使用Google chrome()运行angular项目时,它会显示以下错误消息

浏览器控制台显示以下内容:-

从源代码访问“”处的XMLHttpRequest “”已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查: 请求的资源上不存在“Access Control Allow Origin”标头

单击“”链接时,它会在另一个选项卡中打开,并显示以下错误

高度赞赏您解决此问题的想法

注意:之前没有任何问题为我提供解决方案。

这是您为此问题收到的调试错误日志

> The thread 0x54b0 has exited with code 0 (0x0).
> Microsoft.AspNetCore.Hosting.Internal.WebHost:Information: Request
> starting HTTP/1.1 OPTIONS
> http://localhost:21021/AbpUserConfiguration/GetAll  0
> Microsoft.AspNetCore.Cors.Infrastructure.CorsService:Information: CORS
> policy execution failed.
> Microsoft.AspNetCore.Cors.Infrastructure.CorsService:Information:
> Request origin http://localhost:4200 does not have permission to
> access the resource.
> Microsoft.AspNetCore.Hosting.Internal.WebHost:Information: Request
> finished in 311.689ms 204 
> Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker:Information:
> Route matched with {action = "Index", controller = "Home", area = ""}.
> Executing action San.BA.Web.Host.Controllers.HomeController.Index
> (San.BA.Web.Host) The program '[21292] dotnet.exe' has exited with
> code -1 (0xffffffff).

跨源资源共享(CORS)是W3C标准,允许服务器放宽同源策略。使用CORS,服务器可以显式地允许一些跨源请求,同时拒绝其他请求。CORS比早期的技术(如JSONP)更安全、更灵活。本主题介绍如何在ASP.NET核心应用程序中启用CORS

发生这种情况的原因是服务器端的CORS策略失败。 因为您需要在宿主项目的appsettings.json文件中添加客户端url


“应用程序”:{
......
“CorsOrigins”:”
......
}

有关详细信息,您可以查看以下URL:

我知道这是一个老问题,但我认为这会帮助任何将要面对这个问题的人。我们最近将基于ASP.NET WebAPI的应用程序移动到AWS时遇到了相同的错误。事实证明,负载平衡器(ALB)的超时时间为一分钟,这意味着如果任何API的超时时间超过一分钟,ALB就会取消请求,奇怪的是,Chrome会给出与CORS相关的错误。在IIS HTTPERR日志中,这样的请求被标记为请求被取消。由于我们的一个API花费了一分钟多的时间,我们不得不更改ALB中的超时配置,事情开始顺利进行!
Chrome为什么称之为CORS是个谜

只需进入web.config文件并将下面的代码粘贴到

> The thread 0x54b0 has exited with code 0 (0x0).
> Microsoft.AspNetCore.Hosting.Internal.WebHost:Information: Request
> starting HTTP/1.1 OPTIONS
> http://localhost:21021/AbpUserConfiguration/GetAll  0
> Microsoft.AspNetCore.Cors.Infrastructure.CorsService:Information: CORS
> policy execution failed.
> Microsoft.AspNetCore.Cors.Infrastructure.CorsService:Information:
> Request origin http://localhost:4200 does not have permission to
> access the resource.
> Microsoft.AspNetCore.Hosting.Internal.WebHost:Information: Request
> finished in 311.689ms 204 
> Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker:Information:
> Route matched with {action = "Index", controller = "Home", area = ""}.
> Executing action San.BA.Web.Host.Controllers.HomeController.Index
> (San.BA.Web.Host) The program '[21292] dotnet.exe' has exited with
> code -1 (0xffffffff).
system.webServer



”,您是否可以打开新选项卡并输入此url。是。但它给出了以上404.0错误消息。您使用默认的abp项目模板更改了什么?您是否已发布后端或从VS运行?对于404,似乎请求url是错误的,请检查swagger中的方法,并与我们分享如何从客户端发送请求。api AbpUserConfiguration/GetAll方法在您的服务器端不存在。您好,Tao,我已将现有项目文件添加到下载的默认Abp项目模板中。我用VS运行Abp项目,这是非常有价值和有用的答案。但正如您所回答的,“CorsOrigins”已经在我的appsettings.json文件中定义。您是否在IIS中托管API?