Я пытаюсь подключиться к своему net базовому API из приложения angular. когда я пытаюсь это сделать, я получаю сообщение об ошибке:
Access to XMLHttpRequest at 'https://localhost:44378/api/recloadprime' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
ниже приведены сообщения консоли от моего angular приложения:
Вот что я сделал, чтобы устранить ошибку. Я добавил services.addCors в методе ConfigureServices в файле startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("AllowAnyCorsPolicy", policy => policy.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin());
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
services.AddControllers();
services.AddDbContext<db_recloadContext>();
}
В методе configure я поместил следующий код:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseCors("AllowAnyCorsPolicy");
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
В моем контроллере есть следующее код:
namespace RecLoad.Controllers
{
[Route("api/[controller]")]
[EnableCors("AllowAnyCorsPolicy")]
public class RecLoadPrimeController : ControllerBase
{
private readonly db_recloadContext _context;
public RecLoadPrimeController(db_recloadContext context)
{
_context = context;
}
Я следовал инструкциям, приведенным в документации Microsoft и одном из поста stackoverflow:
https://stackoverflow.com/questions/42199757/enable-options-header-for-cors-on-net-core-web-api
и статье Microsoft:
https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-3.1
Я трачу Много времени просматривал другую документацию и пробовал другой код в файле startup.cs, но эта ошибка не исчезла.
Ниже приведен мой API, который работает нормально:
[HttpGet]
public ActionResult<string> Get()
{
return "This is a test";
}
Ниже заголовок от моего инструмента для разработчиков:
Я также включил расширение CORS в моем браузере chrome. Ниже изображение:
Любая помощь будет высоко оценена.