Bạn có thể thực hiện yêu cầu bằng javascript, đặt bất kỳ tiêu đề nào bạn muốn. Sau đó, bạn có thể URL.createObjectURL()
, để có được thứ gì đó phù hợp với 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 :(');
}
}
}
Kiểu MIME của phản hồi được giữ nguyên. Vì vậy, nếu bạn nhận được phản hồi html, html sẽ hiển thị trong iframe. Nếu bạn yêu cầu một pdf, trình xem pdf của trình duyệt sẽ kích hoạt iframe.
Nếu đây là một phần của ứng dụng phía máy khách đã tồn tại lâu, bạn có thể muốn sử dụng URL.revokeObjectURL()
để tránh rò rỉ bộ nhớ.
Các URL đối tượng cũng khá thú vị. Chúng có hình thức blob:https://your.domain/1e8def13-3817-4eab-ad8a-160923995170
. Bạn thực sự có thể mở chúng trong một tab mới và xem phản hồi và chúng sẽ bị loại bỏ khi ngữ cảnh tạo ra chúng bị đóng.
Đây là một ví dụ đầy đủ: https://github.com/courajs/pdf-poc