como no se puede setear el responseType (https://developers.google.com/web/updates/2012/01/Getting-Rid-of-Synchronous-XHRs) en una peticion sincronica, se debe convertir la respuesta
Fuente: https://developer.mozilla.org/es/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest
var xhr = new XMLHttpRequest();
xhr.open("GET", url, false); //sync
if(token)
xhr.setRequestHeader("authorization", "Bearer " + token);
xhr.overrideMimeType('text\/plain; charset=x-user-defined'); //the magic line
xhr.send();
if(xhr.status == 200) {
var disposition = xhr.getResponseHeader('content-disposition');
var fileName = "";
if (disposition && disposition.indexOf('attachment') !== -1) {
let filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
let matches = filenameRegex.exec(disposition);
if (matches != null && matches[1]) {
fileName = matches[1].replace(/['"]/g, '');
}
}
var type = xhr.getResponseHeader('Content-Type');
var bytes = new Uint8Array(xhr.response.length);
for (var i=0; i<xhr.response.length; i++)
bytes[i] = xhr.response.charCodeAt(i);
var rv = {
blob: new Blob([bytes], { type: type }),
fileName: fileName
};
return rv;
}
else {
var ex = this._errorResponseToException(xhr);
throw ex;
}