XMLHttpRequest как отправить ответ не дожидаясь приёма всех данных
Суть такова. Передаю файл на сервер. На сервере стоит ограничения на размер принимаемых файлов. Доступ к серверу у меня полный. Т.е. ответы я сам формирую - и поэтому могу сделать поведения сервера абсолютно любым.
Так вот. Я принимаю первый пакет данных. Выделяю заголовок и и ищу длину тела. Если длина тела больше разрешённой, то сразу отправляю ответ.
Провёл сотню экспериментов. Даже извращался с длиной принятых данных. Перед тем как ответ отослать.
Поведение браузера всегда одинаково - если я присылаю любой ответ до того как все данные были переданы то я получаю:
событие onreadystatechange
xhr.readyState = 4
xhr.status == 0
xhr.responseText - всегда пусто
Как по мне это какое то тупое поведение.
Я выставлял всевозможные статусы ответа вплоть до экзотических 413. Но xhr.status всегда 0.
Текст всегда xhr.responseText пустой - что бы я не отправлял.
Такое ощущение что браузер тупо по эксепшену вылетает - и даже не пытается обработать код ответа.
Я же хочу прислать сообщение что файл большой - и это сообщение отобразить пользователю.
Кто как решает подобную проблему?
Пока что напрашивается тупой метод - сохранить в сессии код ошибки и запрашивать его отдельным запросом. Но мне этот подход жутко не нравится.
|