Другой SO Вопрос охватывает именно эту тему и предлагает решение, которое работает для IE и Firefox. Короткий ответ заключается в том, что XHR действительно не предназначен для двоичных данных, и данные преобразуются или усекаются при преобразовании в строку для XHR.responseText
.
Лучше всего кодировать Base 64 на стороне сервера.