ASP.NET Core 2: CORS-ошибка

198
02 марта 2018, 14:01

Есть проект, который опубликован как контейнер на Amazon ECS

Startup.cs

public void ConfigureServices(IServiceCollection services
{
    services.AddCors();
    ... 
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{            
    app.UseCors(builder => builder.AllowAnyOrigin()
                                  .AllowAnyHeader()
                                  .AllowAnyMethod()
                                  .AllowCredentials());
    ...   
}

Program.cs

public class Program
{
    public static void Main(string[] args)
    {
        BuildWebHost(args).Run();
    }
    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseSetting("detailedErrors", "true")
            .UseIISIntegration()
            .UseStartup<Startup>()
            .CaptureStartupErrors(true)
            .Build();
}

Dockerfile

FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY *.sln ./
COPY MyApp_API/MyApp_API.csproj MyApp_API/
RUN dotnet restore
COPY . .
WORKDIR /src/MyApp_API
RUN dotnet build -c Release -o /app
FROM build AS publish
RUN dotnet publish -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "MyApp_API.dll"]

docker-compose.ci.build.yml

version: '3'
services:
  ci-build:
    image: microsoft/aspnetcore-build:1.0-2.0
    volumes:
      - .:/src
    working_dir: /src
    command: /bin/bash -c "dotnet restore ./MyApp_API.sln && dotnet publish ./MyApp_API.sln -c Release -o ./obj/Docker/publish"

Когда делаю запрос POST: /api/session в Angular-приложении (HttpClient), то получаю CORS-ошибку.

Не могу понять почему так происходит

  • Как видите, на бэкенд CORS включен.
  • Читал на Amazon: там вроде пишут, что CORS для сервиса ECS по умолчанию включен и никаких блокировок для EC2-инстансов со стороны Amazon соответственно нет.
  • Есть подозрение, что в докер может как-то неправильно заворачивается все. Я от себя никаких изменений в Dockerfile не вносил - все по умолчанию как сгенирировал Visual Stduio.
  • Тип контейнера Linux и как я понимаю туда никакой IIS не заворачивается и значит внутри голый Kestrel, быть может вина в нем.
  • Я также в курсе, что перед тем как сделать кросс-запрос, браузер сначала делает запрос OPTIONS чтобы ему вернули 204 и поэтому также светится ошибка 405, но не знаю что с этим поделать.
READ ALSO
Копирование в буфер нужной колонки в DataGridView

Копирование в буфер нужной колонки в DataGridView

Как реализовать копирование нужных колонок из таблицы? Например при клике на кнопку в буфер должны упасть все значения, которые были в первом...

184
Ограничить число создаваемых потоков

Ограничить число создаваемых потоков

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

131
Обработать ошибку прерывания потока

Обработать ошибку прерывания потока

После завершения функции f_name на строке label16Invoke(new Action(UpdateLabel)); падает исключение "Поток был прерван, когда находился в состоянии ожидания"

149
OleDbConnectionStringBuilder подключение

OleDbConnectionStringBuilder подключение

Всем привет! Решаю задачу на шарпе (сразу говорю, что знаю базу лишь шарпа)

155