Sie können die Anfrage in Javascript stellen und beliebige Header festlegen. Dann können Sie URL.createObjectURL()
etwas Passendes für src
den Iframe bekommen.
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 :(');
}
}
}
Der MIME-Typ der Antwort bleibt erhalten. Wenn Sie also eine HTML-Antwort erhalten, wird das HTML im Iframe angezeigt. Wenn Sie ein PDF angefordert haben, wird der PDF-Viewer des Browsers für den Iframe aktiviert.
Wenn dies Teil einer langlebigen clientseitigen App ist, möchten Sie diese möglicherweise verwenden URL.revokeObjectURL()
Speicherlecks vermeiden.
Die Objekt-URLs sind auch ziemlich interessant. Sie sind von der Form blob:https://your.domain/1e8def13-3817-4eab-ad8a-160923995170
. Sie können sie tatsächlich in einem neuen Tab öffnen und die Antwort anzeigen. Sie werden verworfen, wenn der Kontext, in dem sie erstellt wurden, geschlossen wird.
Hier ist ein vollständiges Beispiel: https://github.com/courajs/pdf-poc