httpClient asyn c запрос и сеансы - PullRequest
0 голосов
/ 14 января 2020

Используя httpClient для проверки, является ли сеанс активным или не всегда возвращает ноль, я протестировал на js выполнение асинхронного c запроса с условием WithCredential: true и работает как ожидалось, возвращая true, когда сеанс активен или false когда нет.

Я уже сделал настройку Cors (на js это работает), это это:

string[] origins = new string[2] { "http://subscripciones:8080", "http://localhost:5000" };
        services.AddCors(options =>
        {
            options.AddPolicy("AllowMyOrigin",
            builder => builder.WithOrigins(origins)
                              .AllowAnyHeader()
                              .AllowAnyMethod()
                              .AllowCredentials());
        });

это моя конфигурация сеанса:

            services.AddDistributedMemoryCache();
        services.AddSession(options =>
        {
            // Set a short timeout for easy testing.
            options.IdleTimeout = TimeSpan.FromSeconds(60);
            options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
            options.Cookie.HttpOnly = true;
            // Make the session cookie essential
            options.Cookie.IsEssential = true;
        });

// и app.UseSession (new SessionOptions () {Cook ie = new CookieBuilder () {Name = ".AspNetCore.Session.ProduSSO"}});

это моя конфигурация для make asyn c запрос через httpclient:

       private readonly HttpClient clientSSO = new HttpClient(new HttpClientHandler
       {
         UseDefaultCredentials = true,
          ClientCertificateOptions = ClientCertificateOption.Automatic
       });
         var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, "http://localhost:5291/Security/IsSessionActive");
        httpRequestMessage.Headers.Add("Host", "localhost");
        httpRequestMessage.Headers.Add("Connection", "keep-alive");
        httpRequestMessage.Headers.Add("Pragma", "no-cache");
        httpRequestMessage.Headers.Add("Cache-Control", "no-cache");
        httpRequestMessage.Headers.Add("Access-Control-Request-Method", "GET");
        httpRequestMessage.Headers.Add("Origin", "http://localhost:5000");
        httpRequestMessage.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36");
        httpRequestMessage.Headers.Add("Access-Control-Request-Headers", "authorization");
        httpRequestMessage.Headers.Add("Accept", "*/*");
        httpRequestMessage.Headers.Add("Sec-Fetch-Site", "cross-site");
        httpRequestMessage.Headers.Add("Sec-Fetch-Mode", "cors");
        httpRequestMessage.Headers.Add("Referer", "http://locahost:5000/");
        httpRequestMessage.Headers.Add("Accept-Encoding", "gzip, deflate, br");
        httpRequestMessage.Headers.Add("Accept-Language", "es-ES,es;q=0.9,en;q=0.8,pt;q=0.7");
        httpRequestMessage.Headers.Add("Authorization", "Bearer 1Q7zkOL59cRqWBkQ12ZiGVW2DBL");

        using (var response = await this.clientSSO.SendAsync(httpRequestMessage))
        {
            if (response.StatusCode == HttpStatusCode.OK)
            {
                var result = response.StatusCode == HttpStatusCode.OK ? await response.Content.ReadAsStringAsync() : String.Empty; // always false

            }
        }
...