ASP.NET Core Web API:CORS 问题

问题描述 投票:0回答:1

我需要你的帮助来解决这个问题。我查遍了互联网,无法弄清楚我做错了什么......CORS......这很痛苦!

在我的

Program.cs
中,我有以下内容:

builder.Services.AddCors(options =>
{
   options.AddDefaultPolicy(policy =>
   {
       policy.WithOrigins("http://localhost:4200", "https://dev-backoffice.mydomain.com", "https://backoffice.mydomain.com")
           .AllowAnyHeader()
           .AllowCredentials()
           .AllowAnyMethod();
   });
});

app.UseCors(); 
app.UseStaticFiles();

但是我仍然收到 CORS 错误:

从源“https://dev-backoffice.mydomain.com”获取“https://dev-api.mydomain.com/v1/authenticate”的访问已被 CORS 策略阻止:对预检请求的响应不会”通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以在禁用 CORS 的情况下获取资源

有什么想法吗?我认为我所放置的内容或多或少地打开了所有内容,只要它来自我给出的网址之一。

c# cors asp.net-core-webapi
1个回答
0
投票

您必须定义如下所示的自定义策略,并将策略应用于 CORS。

第1步:

//定义CORS策略 var CustOrigins = "_custOrigins";

builder.Services.AddCors(options =>
{
     options.AddPolicy(name: CustOrigins,
                      policy => 
                      {
                          policy.WithOrigins("http://localhost:4200", 
                               "https://dev-backoffice.mydomain.com",
                               "https://backoffice.mydomain.com")
                            .AllowAnyHeader()
                            .AllowAnyMethod()
                            .AllowCredentials();
                      });
 });

第2步:

// Apply the CORS policy
app.UseCors(CustOrigins);

步骤3:

在 Action 方法的控制器级别应用 Cors

[ApiController]
[Route("api/[controller]")]
[EnableCors("CustOrigins")] // Apply CORS policy to the entire controller
public class TestController : ControllerBase
{
    [HttpGet]
    public IActionResult Get()
    {
        return Ok(new { Message = "CORS is applied to this controller!" });
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.