Вы можете сделать запрос в javascript, установив любые заголовки, какие захотите. Тогда вы сможете URL.createObjectURL()
получить что-то подходящее для src
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 :(');
}
}
}
MIME-тип ответа сохраняется. Поэтому, если вы получите ответ html, он отобразится в iframe. Если вы запросили PDF-файл, программа просмотра PDF-файлов в браузере запустит iframe.
Если это часть долгоживущего клиентского приложения, вы можете использовать его, URL.revokeObjectURL()
чтобы избежать утечек памяти.
URL-адреса объектов тоже довольно интересны. Они имеют форму blob:https://your.domain/1e8def13-3817-4eab-ad8a-160923995170
. Фактически вы можете открыть их на новой вкладке и увидеть ответ, и они отбрасываются, когда контекст, в котором они созданы, закрывается.
Вот полный пример: https://github.com/courajs/pdf-poc