如何解决我的网页上没有“Access-Control-Allow-Origin”CORS 错误?

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

我创建了一个网页,该网页从我使用 .NET Framework 8.0 在 C# 中构建的 .NET Core Web API 获取数据。我的网页和 api 托管在同一台服务器上,只是端口不同。当我尝试调用 api 时,控制台会输出以下错误:

从源“网页地址”获取“api 地址”的访问已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。

我纠正问题的第一步是查找 Microsoft 的文档 在 ASP.NET Core 中启用跨源请求。我滚动到 CORS with defaultpolicy and middleware 部分,并更改了 Program.cs 中的代码,如下所示:

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

builder.Services.AddCors(options =>
{
    options.AddDefaultPolicy(policy =>
    {
        policy.WithOrigins("Webpage Address", "API Address")
            .AllowAnyMethod()
            .AllowAnyHeader();
    });
});

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseCors();

app.UseAuthorization();

app.MapControllers();

app.Run();

我仍然收到此代码的 CORS 错误,因此我尝试了以下更改,但仍然导致错误:

builder.Services.AddCors(options =>
{
    options.AddDefaultPolicy(policy =>
    {
        policy.AllowAnyOrigins()
            .AllowAnyMethod()
            .AllowAnyHeader();
    });
});

我还尝试根据“具有命名策略和中间件的 CORS”部分配置我的代码,但结果与上面概述的结果相同。有人可以帮忙吗?

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

builder.Services.AddCors(options => options.AddPolicy( "AllowAll", p => p.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader())); // ... more code app.UseCors("AllowAll"); app.UseCors(cors => cors.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());

看看是否有效,请告诉我们!

© www.soinside.com 2019 - 2024. All rights reserved.