Как разместить приложение Vue.js на той же конечной точке, что и серверная, чтобы избежать проблем с CORS? - PullRequest
0 голосов
/ 06 июня 2019

Мне очень трудно решать проблемы с CORs, поэтому я хочу знать, возможно ли разместить одностраничное приложение Vue.js на том же хосте и порту, что и серверная часть ASP .NET Core?

В настоящее время сервер находится на localhost: 5000, а клиент - localhost: 8080.Это отлично работает в отладке, я F5 бэкэнд, используя Kestrel, и обслуживать интерфейс, используя Vue CLI.Работает нормально.Однако ...

При публикации приложения с собственным хостом с помощью:

dotnet publish -c release -r win10-x64

Затем, запустив автономный .exe, он помещает бэкэнд в https на порт 5001 и запускает клиент, используяVue CLI снова на 8080. Теперь ничего не работает, я получаю ошибки CORS:

Доступ к XMLHttpRequest в 'http://localhost:5000/api/v1/students' from origin' http://localhost:8080' заблокирован политикой CORS: На запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».

Доступ к XMLHttpRequest в «https://localhost:5001/notify/negotiate' от источника» http://localhost:8080' заблокирован CORSpolicy: Ответ на запрос предварительной проверки не проходит проверку контроля доступа: значение заголовка «Access-Control-Allow-Origin» в ответе не должно быть подстановочным знаком «*», если режим учетных данных запроса имеет значение «include».Режим учетных данных запросов, инициированных XMLHttpRequest, контролируется атрибутом withCredentials.

Мой запуск:

    public void ConfigureServices(IServiceCollection services) {
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

      services.AddSpaStaticFiles(configuration => {
        configuration.RootPath = "ClientApp/dist";
      });

      services.AddCors();
      services.AddSignalR();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env) {
      if (env.IsDevelopment()) {
        app.UseDeveloperExceptionPage();
      }
      else {
        app.UseHsts();
        app.UseHttpsRedirection();
      }

      app.UseStaticFiles();
      app.UseSpaStaticFiles();
      app.UseAuthentication();
      app.UseCors(builder => builder.WithOrigins("http://localhost:8080").AllowAnyMethod().AllowAnyHeader().AllowCredentials());
      app.UseSignalR(routes => { routes.MapHub<NotifyHub>("/notify"); });
      app.UseMvc();
    }

Я не уверен, как развернуть это приложение.Кажется, он состоит из двух частей, которые нужно запускать отдельно.В идеале я хотел бы, чтобы он был как один, но даже как два, если бы он мог работать с CORS.

1) Как запустить на том же IP и узле, избегая CORS?2) Если выше не представляется возможным, как исправить проблему с CORS?

Спасибо.

...