Puede realizar la solicitud en javascript, configurando los encabezados que desee. Entonces puede URL.createObjectURL()
, para obtener algo adecuado para src
el iframe.
var xhr = new XMLHttpRequest();
xhr.open('GET', 'page.html');
xhr.onreadystatechange = handler;
xhr.responseType = 'blob';
xhr.setRequestHeader('Authorization', 'Bearer ' + token);
xhr.send();
function handler() {
if (this.readyState === this.DONE) {
if (this.status === 200) {
var data_url = URL.createObjectURL(this.response);
document.querySelector('#output-frame-id').src = data_url;
} else {
console.error('no pdf :(');
}
}
}
Se conserva el tipo MIME de la respuesta. Entonces, si obtiene una respuesta html, el html se mostrará en el iframe. Si solicitó un pdf, el visor de pdf del navegador se activará para el iframe.
Si esto es parte de una aplicación del lado del cliente de larga duración, es posible que desee utilizarla URL.revokeObjectURL()
para evitar pérdidas de memoria.
Las URL de los objetos también son bastante interesantes. Son de la forma blob:https://your.domain/1e8def13-3817-4eab-ad8a-160923995170
. De hecho, puede abrirlos en una nueva pestaña y ver la respuesta, y se descartan cuando se cierra el contexto que los creó.
Aquí hay un ejemplo completo: https://github.com/courajs/pdf-poc