Я работаю над проектом .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.
Пример выше точно такой же на компьютере, где он работал, и на том, на котором он не работал.