Обычно при использовании iframe устанавливается источник, который позволяет отображать контент извне текущего документа. Это особенно полезно для встраивания стороннего контента в ваше приложение.

Типовая реализация

<iframe src="https://mythridpartycontent.com"></iframe>

Однако, когда вы начинаете рассматривать вопросы динамического содержимого и безопасности, возникает необходимость подумать о заполнении содержимого iframe по-другому. В этом примере мы собираемся использовать вызов ajax, сделанный с модулем axios, для отправки заголовков авторизации и динамического обновления содержимого нашего iframe.

Установка axios

Axios - это HTTP-клиент, основанный на обещаниях, который упрощает AJAX и предоставляет простой чистый интерфейс для выполнения вызовов XMLHttpRequest (XHR).

$ npm install axios

Совершение звонка

После установки axios вы можете динамически заполнять содержимое iframe с помощью объекта ответа XHR.

Сначала измените свой iframe следующим образом:

<iframe id="my_iframe"></iframe>

Затем сделайте свой звонок с помощью axios.

// myexample.js
function getContent(url) {
    const authToken = <my_token>;
    const header = {'Authorization':'Basic '+authToken};
    const iframe = document.getElementById('my_iframe').contentDocument;
      axios.get(url, {headers:header})
        .then((response) => {
            iframe.write(response.data);
        }
        .catch((error) => {
            console.log(error);
        });
}

С помощью этого относительно простого метода теперь вы можете динамически настраивать содержимое iframe и предлагать заголовки авторизации стороннему источнику, помогая повысить уровень безопасности их содержимого.