ASP.NET Основной API, позволяющий Cors, не работает

#javascript #c# #asp.net-core #cors

#javascript #c# #asp.net-core #cors

Вопрос:

Впервые пытаюсь создать api с asp.net ядро, я использую ASP.NET Ядро 3.1. Я сталкиваюсь с этой консольной ошибкой при попытке отправить запрос GET:

 Access to XMLHttpRequest at 'https://localhost:5001/api/items/1' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. 
  

Я перепробовал много решений на этом сайте и от других, и они, похоже, не работают для меня.
Вот что у меня есть для моей стороны Javascript:

 const sendRequest = async function(url) {
    try {
        let response = await axios.get(url);
        return response;
    } catch (error) {
        console.error(error);
        return [];
    }
};
  

Вот что у меня есть в Startup.cs

 public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors(options =>
            {
                options.AddPolicy("AllowMyOrigin",
                builder => builder.WithOrigins(
                    "http://localhost:8080/")
                    .WithMethods("POST", "GET", "PUT")
                    .WithHeaders("*")
                    );
            });
            services.AddDbContext<DBContext>(opt =>
            opt.UseSqlServer(Configuration.GetConnectionString("DatabaseName")));
            services.AddControllers();
            
            
        }

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            
            //app.UseAuthentication();
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseHttpsRedirection();

            app.UseRouting();
            app.UseCors("AllowMyOrigin");
            //app.UseAuthorization();
            //app.UseAuthentication();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }
  

Если это слишком мало информации, я попытаюсь уточнить, но, как я уже сказал, я впервые делаю что-то подобное, связанное с политикой cors.

Ответ №1:

Конструктор.С оригинальными («http://localhost:8080 /»)

Пожалуйста, обратите внимание, что указанный URL-адрес не должен содержать завершающую косую черту ( / ). Пожалуйста, измените код, как показано ниже, затем проверьте, хорошо ли он работает.

 services.AddCors(options =>
{
    options.AddPolicy("AllowMyOrigin",
        builder => builder.WithOrigins(
            "http://localhost:8080")
        .WithMethods("POST", "GET", "PUT")
        .AllowAnyHeader()
        );
});
  

Ответ №2:

Пожалуйста, попробуйте добавить это внутри

 public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseCors(x => x.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
}