На сайте при первом заходе устанавливается несколько кук, в том числе PHPSESSID, всем известный идентификатор сессии.
После нескольких переходов по сайту (рандомный момент, никакой логики) из хранилища браузера пропадают все куки, относящиеся к домену сайта, в том числе и PHPSESSID, у которой стоит флаг httpOnly.
Я смотрю во вкладку network, проверил все запросы именно к сайту (есть и другие, к рекламным площадкам и т.п.) и в заголовках нет ни слова о том что куки должны удаляться.
т.е. они как будто бы просто пропадают и всё.
Раз стоит флаг httpOnly, значит JS не может её удалить, верно? Кто тогда её удаляет? Как отследить?
Проблема была в переполнении хранилища для кук. Насколько я понял, браузер выделяет под куки для определённого домена около 4кб, и когда оно заполнялось до отказа, браузер удалял старые куки. А виноват в переполнении был js от стороннего сервиса.
Просто отслеживайте обращения к document.cookie -> предопределите его своей функцией, установите программную точку остановки и ловите вызовы, по параметрам уже будет видно, что за функция их удаляет.
у PHPSESSID и ещё одной сессионной куки стоит флаг httpOnly, и тем не менее они тоже пропадают. В общем-то только они и важны, т.к. авторизация слетает. Есть ли смысл отслеживать document.cookie, если стоят флаги httpOnly и JS по идее не имеет к ним доступа?
New_Horizons, без понятия, я в куках разбираюсь слабо. Во всех своих сайтах стараюсь использовать localStorage и очень редко куки, да и то с помощью вспомогательных библиотек.