У меня есть очень тривиальная форма входа в систему с полями ввода 'username' / 'pass' и кнопкой 'Login'.Когда пользователь нажимает «Логин», я отправляю запрос fetch () на сервер.Что ж, серверная часть отвечает клиенту кодом состояния 401, если был введен неправильный ввод имени пользователя или пароля.
Буквально сегодня я обнаружил, что все последние версии браузеров на основе WebKit (по крайней мере, под MacOS)При получении статуса 401 отобразится всплывающее окно системы с двумя входами (логин / пароль) и двумя кнопками (Отмена / ОК).Затронуты Google Chrome, Opera и Safari.(Mozilla Firefox и MS Edge в порядке!)
Самое «забавное» - это то, что Google Chrome 69 дополнительно останавливает основной поток JavaScript до тех пор, пока не будет нажата одна из кнопок в упомянутом выше всплывающем окне системы.(Кстати, Chrome 66 ничего подобного не делает)
Пока я нашел только один обходной путь: изменил все 401 статусов на бэкенде на что-то нестандартное, например 471 ...
Так что я на самом делезадайте сразу два вопроса:
1) если кто-то знает лучшее решение описанной проблемы, оно будет высоко оценено и заранее большое спасибо
2) было бы очень интересно узнать, почемуи что разработчики WebKit сделали так