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