Сохранение cook ie с параметром SameSite как `Любой тип соединения` - PullRequest
0 голосов
/ 24 марта 2020

Я работаю над проектом .NetCore MVC. Как следует из названия, моя цель - сохранить повара ie, который в конечном итоге будет доступен через iframe.

Чтобы добиться этого, я и сделал -

Startup.cs -

            app.UseCookiePolicy(new CookiePolicyOptions
            {
                MinimumSameSitePolicy = SameSiteMode.None
            });

Использование фактического класса CookieOption -

        public void SetCookie(string key, string value, int? expireTime, HttpResponse Response)
        {
            CookieOptions option = new CookieOptions();
            //allow cross-site cookies for iframes
            option.SameSite = SameSiteMode.None;

            if (expireTime.HasValue)
                option.Expires = DateTime.Now.AddMinutes(expireTime.Value);
            else
                option.Expires = DateTime.Now.AddMilliseconds(10);
            Response.Cookies.Append(key, value, option);
        }

Выполнение вышеизложенного Кажется, что это не всегда работает должным образом. Iv'e протестировал множество браузеров, как настольных, так и мобильных. Просто обнаружил, что иногда повар ie хранится успешно вот так -

Send for:
   Any kind of connection

Accessible to script:
   Yes

А иногда в той же точной версии chrome просто другой компьютер хранится вот так -

Send for:
   Same-site connections only

Accessible to script:
   Yes

Что в основном означает, что он не будет доступен с помощью iframes. Проблема не является конкретной c компьютерной проблемой, поскольку мне удалось продублировать проблему на 3 разных компьютерах с одинаковой версией chrome, которая отлично работает на других компьютерах.

Приведенный выше пример был создан с использованием эта chrome версия (последняя версия): Версия 80.0.3987.149 (Официальная сборка) (64-разрядная версия)

У кого-нибудь есть идеи, как мне преодолеть это? Я должен убедиться, что файлы cookie всегда будут доступны с помощью iframe.

Спасибо!

Редактировать - Попытка установить флажок Secure и HttpOnly. Поэтому я настроил мой код, чтобы установить HttpOnly и безопасные флаги для истины. Компьютеры, которые обычно работали нормально, имели следующие настройки: ie -

Send for
    Secure connections only
Accessible to script
    No (HttpOnly)

И он отлично работает с iframe.

Компьютер, который раньше не работал, имел этот повар ie настройки -

Send for
    Secure same-site connections only
Accessible to script
    No (HttpOnly)

Который явно не работал с iframe ...

Просто обновление другого подхода, который не работал.

Редактировать 2 - Использование фиддлера для перехвата ответа куки:

Итак, использование фиддлера для чтения повара ie Вот как это выглядит -

    Set-Cookie: __cfduid={randomvaluehere}; expires=Fri, 24-Apr-20 17:37:48 GMT; path=/; domain=.domain.com; HttpOnly; SameSite=Lax

    Set-Cookie: mycookie=mycookievalue; expires=Fri, 24 Apr 2020 17:37:49 GMT; path=/; secure; httponly

Так выглядит ответ хранит повар ie с параметром SameSite = Lax на вершине домена, который меня не волнует. Я работаю над поддоменом, который является вторым set-cook ie, который показан выше. Похоже, SameSite = None явно не представлен, не так ли? если так, то почему бы не увидеть код выше? Также напоминаю вам, что это точно работает для других браузеров или других компьютеров с той же версией chrome.

Пример выше точно такой же на компьютере, где он работал, и на том, на котором он не работал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...