Падающее печенье MS Edge - PullRequest
       50

Падающее печенье MS Edge

0 голосов
/ 29 ноября 2018

Мы наблюдаем странное поведение на MS Edge по крайней мере с версиями 16/17.Та же проблема не возникает в IE 11 / Chrome / Firefox.

Наши пользователи проходят проверку подлинности с помощью файла cookie сеанса.Имя файла cookie - «app».Другие файлы cookie включают сохранение текущего языка отображения с именем файла cookie «prefLang».Файлы cookie являются HttpOnly, безопасными и устанавливаются только для используемого субдомена.

В некоторых случаях MS Edge просто удаляет файл cookie сеанса с именем «app» и больше не является частью HTTP-запроса.Упомянутый cookie «prefLang» не удаляется и отображается на сервере.

Случаи удаления не легко воспроизводимы, но были видимы иногда , когда:

  • Пользователь открывает внешне связанную страницу из контекста приложения, вошедшего в систему, с target = _blank
  • Более 12 минут прошло между запросами страницы в контексте приложения
  • непосредственно в течение нескольких секунд после запроса страницы
  • пользователь открывает iframe с запросом страницы из того же источника

Пример со стороной сервера информации отладки запроса / ответа, где файл cookie сеанса app = redactedABC не передается на сервер

2018-11-28 09:44:00 UTC POST hasIdentity: 1 UserId: <redacted>  Request: https://app.domain.com/page/action/full/add/0 / Cookie: _gid=redacted; _ga=redacted; app=redacted-ABC; prefLang=de

2018-11-28 09:44:00 UTC 200 hasIdentity: 0 UserId: 0  Response headers: Array
(
    [0] => Expires: Thu, 19 Nov 1981 08:52:00 GMT
    [1] => Cache-Control: no-store, no-cache, must-revalidate
    [2] => Pragma: no-cache
)

2018-11-28 09:46:21 UTC POST hasIdentity: 0 UserId: 0  Request: https://app.domain.com/page/action/full/add/0 / Cookie: _gid=redacted; _ga=redacted; prefLang=de

2018-11-28 09:46:21 UTC 302 hasIdentity: 0 UserId: 0  Response headers: Array
(
    [0] => Expires: Thu, 19 Nov 1981 08:52:00 GMT
    [1] => Cache-Control: no-store, no-cache, must-revalidate
    [2] => Pragma: no-cache
    [3] => Set-Cookie: app=redactedXYZ; path=/; domain=app.domain.com; secure; HttpOnly
)

2018-11-28 09:46:21 UTC GET hasIdentity: 0 UserId: 0  Request: https://app.domain.com/account/login / Cookie: _gid=redacted; _ga=redacted; prefLang=de; app=redactedXYZ

2018-11-28 09:46:21 UTC 200 hasIdentity: 0 UserId: 0  Response headers: Array
(
    [0] => Expires: Thu, 19 Nov 1981 08:52:00 GMT
    [1] => Cache-Control: no-store, no-cache, must-revalidate
    [2] => Pragma: no-cache
)

1 Ответ

0 голосов
/ 06 декабря 2018

У меня так много вопросов и мыслей, что комментарий будет слишком длинным:

  1. Когда вы говорите, что в других браузерах все нормально, он основан на некоторых тестовых примерах или Edge - только одиниз многих обычно используемых браузеров?
  2. Удалось ли вам проверить, зарегистрированы ли cookie на стороне клиента до / после ошибочного запроса?Вы проверяли заголовки запроса на стороне клиента?Вопрос в том, что Эдж забыл сам куки, Эдж забыл отправить куки, Эдж отправил плохой куки.Вы также пытались немного подправить имя файла cookie и его содержимое (например, удалить домен , если это возможно в контексте вашего субдомена)?
  3. Что на стороне сервера? Балансировщик нагрузки может быть объяснением.Хранение сеанса также может быть подсказкой (хотя вероятность этого довольно мала, за исключением случаев, когда запрос «нет возвращенного файла cookie сеанса» является следствием предыдущего недопустимого недопустимого нажатия куки-файла).Конечно, исследования на стороне сервера не имеют смысла, если другие браузеры работают безупречно в значительном количестве.

  4. Как вы запускаете приложение на стороне клиента и выполняете запросы?Ajax или выборочные запросы вместе с полной загрузкой документов (ваши URI выглядят очень APIsh)?Вы заметили связь между режимом запроса и проблемой?Недоступность данных cookie в клиентских частях приложения также может быть указанием (например, работник службы, который не может получить доступ к cookie , просыпается по запросу при редко встречающихся условиях). Edge также может быть неисправен с cookie, отправленным с Ajax в локальных файлах (ужасный способ приложения, но я видел столько странных вещей).

С информациейВы указали, что очень немногие из этих пунктов способны вызвать такое противоречивое поведение, за исключением случаев, когда они смешаны в каком-то кровавом зелье, чувствительном к краям.В любом случае, ответы могут помочь сфокусировать проблему и определить более воспроизводимый контекст.

Помимо этого, я обнаружил 2-летнюю ветку , в которой говорится об очень, очень, очень, похожая проблема, все еще активная и выглядит нерешенной, для ... IE11 (извините).Это связано с удалением файлов cookie сеанса при доступе из разных процессов браузера (таких как вкладки или iframe).Я ничего не нашел об этой проблеме для Edge, и я полагаю, что большая часть движка была переписана, но, возможно, вам удалось найти раздел с привидениями (хотя вы говорите, что все хорошо в IE11)?

Если вы согласны, вам лучше отредактировать свой вопрос с соответствующими вопросами, чтобы я мог удалить этот ответ, который не является реальным.

...