В предыдущих ответах предполагается, что ваши куки не помечены как http-only. Если вы хотите предотвратить атаки XSS, вам, вероятно, следует установить файлы cookie только для http, и изменение файлов cookie с помощью javascript не будет работать.
Решение состоит в том, чтобы удалить cookie с сервера, для чего потребуется запрос HTTP, прежде чем вкладка будет закрыта.
Большинство библиотек JS будут использовать асинхронные HTTP-запросы, что приведет к закрытию вкладки до получения просроченного cookie-файла с сервера, поэтому асинхронные вызовы не будут работать надежно.
Единственный способ заставить его работать надежно (по крайней мере, в Chrome) - это сделать синхронный вызов:
window.onbeforeunload = function () {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "api/logout", false);
xmlhttp.setRequestHeader("Content-type", "application/json");
xmlhttp.send();
}
Просто убедитесь, что ваша конечная точка выхода из системы на сервере проста, чтобы ответ был быстрым и пользовательский интерфейс не блокировался слишком долго.
Редактировать: как упоминалось ранее, использование onbeforeunload для уничтожения файлов cookie должно использоваться только в том случае, если это одностраничное приложение.