Safari не сохраняет куки на iPhone или iPad (iOS), когда приложение сразу закрывается - PullRequest
0 голосов
/ 07 июня 2019

Некоторые устройства iPhone / iPad теряют свои cookie-файлы для входа в систему, если приложение или вкладка закрываются сразу после входа в систему.

Что я нашел в своем исследовании и безуспешно решил:

  1. Возможно, Safari отключил файлы cookie по умолчанию ( Файл cookie не работает в MAC-Safari и IOS Mobile- Safari )

    • Проверено, и файлы cookie включены
  2. Кто-то упомянул запятые и точки с запятой в значении cookie, не работают в Safari ( Файл cookie не работает в MAC -Safari и IOS Mobile- Safari )( Странная проблема с файлами cookie в Safari и Asp.net )

    • Код выполняет FormsAuthentication.Encrypt () для преобразования всего в символы верхнего регистра
String hash = FormsAuthentication.Encrypt(ticket);
  • Выключил FormsCookiePath при создании билета FormsAuthenticationTease, если в пути были недопустимые символы на iOS и Android
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
  1,
  user.MemberNumber.ToString(),
  DateTime.UtcNow,
  DateTime.UtcNow.AddDays(numOfDays),
  true,
  string.Empty);
  //FormsAuthentication.FormsCookiePath);

AppPool может сбрасывать ключ шифрования ( Обеспечение постоянного входа пользователя в систему с членством ASP .Net )

  • Проверено, что machineKey обновлялся

Возможно, Safari установлен в приватном режиме для просмотра ( Файлы cookie не сохраняются между сеансами браузера на iOS Safari )

  • Проверено, что Safari работаетне в приватном режиме

web.config может потребоваться явно установить cookie для использования cookie с аутентификацией форм (http://www.bloggersworld.com/index.php/asp-net-forms-authentication-iphone-cookies/)

  • Добавленоcookieless = "UseCookies" до

Safari не может установить cookie при перенаправлении на Мой аккаунт ( Safari не сохраняет cookie-файлы, но Chrome )

  • Добавлен заголовок к объекту Response для пользователей сафари (поначалу это работало для iPad, но больше нет)
if (HttpContext.Current.Request.Browser.Type.ToLower().Contains("safari"))
{
    HttpContext.Current.Response.AddHeader("Set-Cookie", CookieName + "=" + cookie + "; path=/; domain=" + HttpContext.Current.Request.Url.Host + ";");
}

Используйте Web Inspector на MacBook, чтобы убедиться, что файлы cookie сброшены на iPhone

  • Все отлично работает на iPhone, когда он подключен к MacBook, но ломается, когда он отключен.
  • На самом деле, при удалении cookie во время подключения, Web Inspector в Safari на MacBook показывает, что cookie был удален, но когда я отключаюсь и пытаюсь получить доступ к сайту на отключенном iPhone, он все равно показывает, что я вошел в систему.Повторно подключите iPhone к MacBook, и исходный файл cookie все еще там.

iOS11, кажется, гораздо более заблокирован с точки зрения того, какие куки он принимает.( Сохранение файлов cookie в iOS Safari / Chrome )

  • Добавлен домен для создания файлов cookie

ДругиеНеприменимые проблемы

  • Safari не получает куки при использовании IFRAME
  • Safari не читает сторонние куки

Источник: Safari. Сторонний трюк iframe с файлами cookie больше не работает?

Я не уверен, почему файлы cookie не сохраняются, пока кто-то не перемещается по сайту, но его легко тиражировать таким образом:

  1. Перейти на сайт
  2. Войти (логин перенаправляет пользователя на страницу «Моя учетная запись»)
  3. Закрыть приложение
  4. Возвратв приложение (вкладка уже находится на странице «Моя учетная запись», которая перенаправляет пользователя на вход в систему, поскольку браузер не находит cookie и считает, что пользователь не вошел в систему.
...