ASP.NET Core 6 中的“访问控制允许来源”

vis*_*ode 13 c# asp.net-core asp.net-core-6.0

经过测试Postman并且工作正常。在浏览器中我收到此错误:

从源“https://localhost:44426”访问“http://localhost:5081/api/Accounting/GetSales”处的 XMLHttpRequest 已被 CORS 策略阻止:不存在“Access-Control-Allow-Origin”标头关于所请求的资源。

使用 Angular 和 .Net6 的 Asp Net Core 项目

[DisableCors]
[HttpGet("GetSales")]
        public IEnumerable<SaleDto> GetSales()
        {
            var result = _context.Sales.Select(x => new SaleDto
            {
                AccountName = x.Account.Name,
                CategoryName = x.Category.CategoryName,
                SaleDate = x.SaleDate,
                SaleId = x.SaleId,
                SaleValue = x.SaleValue,
            });
            return result;
        }
Run Code Online (Sandbox Code Playgroud)

Eri*_*lfs 8

注册中间件时是否有正确的条目? 在 ASP.NET Core 中启用跨源请求 (CORS)。

您将需要添加本地主机和端口号。我相信端口号目前正在引起问题。如果两个站点位于同一端口号,您可能不会遇到此问题。另请参阅同一域上 CORS 错误的答案。 同一域上出现 CORS 错误?

另外,您希望启用 CORS,而不是禁用它。CORS 放宽了安全措施,以便您的代码可以跨端口访问。


Wow*_* Ot 6

对我有用的是

app.UseCors(builder => builder
       .AllowAnyHeader()
       .AllowAnyMethod()
       .AllowAnyOrigin()
    );
Run Code Online (Sandbox Code Playgroud)

app.UseRouting();

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");
});
Run Code Online (Sandbox Code Playgroud)

在你Program.csstartup.cs

然后你可以改变你的配置