Подтвердить что ты не робот

Добавьте ответ "контроль доступа-allow-origin" на запрос предполетных опций в Asp.NET

Я получаю следующую ошибку в Chrome:

Ответ на запрос предполетной проверки не проходит проверку контроля доступа. Нет заголовка "Access-Control-Allow-Origin" в запрошенном ресурс. Происхождение http://localhost:9000 'поэтому не допускается доступ.

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

    app.UseIISPlatformHandler();

    app.UseDefaultFiles();
    app.UseStaticFiles();

    app.UseCors(policy => policy
       .WithOrigins("http://localhost:9000")
       .AllowAnyMethod()
       .WithHeaders("Access-Control-Allow-Origin, Content-Type, x-xsrf-token, Authorization")
       .AllowCredentials());

    app.UseMvc();
}

В соответствии с chrome в ответ не добавляется ни одного заголовка.

Каков правильный способ добавления заголовка access-control-allow-origin в ответ на параметры в Asp.NET 5?

4b9b3361

Ответ 1

Это не имеет смысла, но, как предложил @Sirwan, используя .AllowAnyHeader() установить доступ к ответу параметров...

Ответ 2

Считайте, что Google Chrome проблема, которая не поддерживает localhost для доступа через Access-Control- Allow-Origin.

В вашем коде вы включили CORS с методами AddCors и UseCors в методе Configure, убедитесь, что вы выполнили инструкции, доступные в Указание политики CORS (которая используется в методе ConfigureServices) и Как включить CORS в ASP.NET 5

Вы также можете просто написать Action Filter для простого Asp.net MVC-контроллера.

Типы CORS '

  • Microsoft.AspNet.WebApi.Cors: используйте его для включения запроса CORS ТОЛЬКО для веб-API.
  • Microsoft.AspNet.Cors: используйте его для включения контроллеров CORS для MVC.
  • Microsoft.Owin.Cors: используйте его, чтобы включить CORS для всех кросс-истоков запросы, поступающие на ваш сайт, например, когда вы хотите включить CORS для Web API и SignalR.

Ответ 3

чтобы преодолеть проблему перед полетом, добавьте в свой API одинаковый метод имени [httpoption] и верните успех оттуда, теперь просто запустите ваше веб-клиентское приложение, и вы получите тот же метод дважды в первый раз, когда будет запущен метод httpoption, а затем ваш оригинал