Доступ к XMLHttpRequest заблокирован политикой CORS в ASP.NET CORE

Я попытался установить соединение со своего стороннего клиента с сервером API с помощью ajax, но в ответе появляется сообщение об ошибке: Доступ к XMLHttpRequest в 'https://localhost:44381/api/webinars 'из источника' http://localhost:5003 'заблокирован политикой CORS: ответ на предварительный запрос не проходит проверку контроля доступа: для запрошенного ресурса нет заголовка' Access-Control-Allow-Origin '. Я попытался изменить политику CROS в API, но у меня все еще возникает та же ошибка. Это мой код ajax из MVC:

 $.ajax({
            url: "https://localhost:44381/api/webinars",
            type: 'POST',
            headers: {
                contentType: "application/json",
            },
            body: JSON.stringify(body),
            success: function (data) {
                console.log(data);
            },
            failure: function (err) {
                console.log(err);
            }

        });

Запуск из API:

  public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {

        services.AddCors(options =>
        {
            options.AddPolicy("AllowMyOrigin",
            builder => builder.WithOrigins(
                "http://localhost:5003/",
                "http://apirequest.io")
                .WithMethods("POST","GET","PUT")
                .WithHeaders("*")
                );
        });
          //code
    }

   public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        //code
        app.UseCors("AllowMyOrigin");
        app.UseHttpsRedirection();
        app.UseMvc();
    }
}

Контроллер в API:

[EnableCors("AllowMyOrigin")]

[Route("api/[controller]")]
[ApiController]
public class WebinarsController : ControllerBase
{
        // POST: api/Webinars
    [HttpPost]
    public async Task <ActionResult> PostAsync([FromBody] Item newItem)
    {     
         //code
      }
 }

Спасибо за ответ.


person Julio    schedule 04.11.2019    source источник
comment
stackoverflow.com/questions/53298478/   -  person Noobie    schedule 05.11.2019


Ответы (1)


вам следует заменить app.UseMvc (); с участием

app.UseEndpoints(endpoints =>
{
   endpoints.MapControllers();
});
person Hamdi Ch    schedule 28.04.2020
comment
также нет необходимости использовать [EnableCors (AllowMyOrigin)], он уже настроен при запуске - person Hamdi Ch; 29.04.2020
comment
Ваш комментарий, вероятно, будет лучше в качестве редактирования вашего ответа. Спасибо! - person d219; 29.04.2020