#asp.net-core-webapi
#asp.net-core-webapi
Вопрос:
Я создал api с использованием .net core 5.0, но независимо от того, что я делаю, он, похоже, блокирует мой запрос к нему, выдавая ошибку
has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
мой код в моем startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddCors(options =>
{
options.AddPolicy("AllowAnyCorsPolicy", policy => policy.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin());
});
services.AddTransient<IChatLog, LogsData>(provider => new LogsData());
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseCors();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
Из того, что я прочитал, это должно разрешать любые запросы из любого места, но по какой-то причине оно все еще блокируется.
Кто-нибудь знает, что не так?
Ответ №1:
Потому app.UseCors()
что не указано имя политики. Вы можете добавить имя AllowAnyCorsPolicy
.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//...
app.UseCors("AllowAnyCorsPolicy");
//...
}
Комментарии:
1. @andrew slaughter, может ли этот ответ вам помочь?
Ответ №2:
Используйте этот синтаксис:
services.AddCors(o => o.AddPolicy("AllowAnyCorsPolicy", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
}));
и это тоже:
app.UseCors("AllowAnyCorsPolicy");