Angular приложение, выполняющее вызовы на локальном хосте, делает приложение tnet на другом порту без перехода по ссылке. Из-за withCredentials? - PullRequest
0 голосов
/ 12 апреля 2020

Я устанавливаю новое приложение Angular с Angular CLI, и оно работает на http://localhost: 4200 Я называю веб-сервисы, которые я разрабатываю с помощью ядра do tnet, которое работает на http://localhost: 5000

Я разрешил CORS для настройки localhost. Я уверен, что это работало в прошлом, но теперь я получаю сообщение об ошибке

no-referrer-when-downgrade

в chrome.

Это как-то связано с withCredentials: true Если я поставлю false, то все будет работать нормально.

Как я могу передавать учетные данные при вызовах http на другой порт в том же домене localhost?

Ответы [ 2 ]

1 голос
/ 12 апреля 2020

Возможно, вы попытаетесь обновить ваше базовое приложение. NET до HTTPS.

Сообщение no-referrer-when-downgrade указывает на то, что используется политика реферера по умолчанию, как описано здесь .

no-referrer-when-downgrade (по умолчанию)

Это поведение по умолчанию, если политика не указана или указанное значение недопустимо. Источник, путь и строка запроса URL-адреса отправляются в качестве источника ссылки, когда уровень безопасности протокола остается неизменным (HTTP → HTTP, HTTPS → HTTPS) или улучшается (HTTP → HTTPS), но не отправляется в менее безопасные места назначения ( HTTPS → HTTP).

Просто для теста вы можете попытаться установить для политики реферера для среды разработки другое значение (этот код использует NWebse c .AspNetCore.Middleware):

if (env.IsDevelopment())
{
    app.UseReferrerPolicy(opts => opts.UnsafeUrl());
}
0 голосов
/ 12 апреля 2020

Оказалось, что это была не проблема отсутствия ссылки, а проблема CORS. Мне не хватало AllowCredentials () в политике CORS

    public void ConfigureServices(IServiceCollection services)
    {
        // add cors
        services.AddCors(options =>
        {
            options.AddPolicy(name: "MyCorsPolicy",
                builder => builder.SetIsOriginAllowed(s => s.Contains("localhost"))
                    .AllowAnyMethod()
                    .AllowAnyHeader()
                    .AllowCredentials());
        });
    }
...