2014-12-16 6 views
5

Я пытаюсь встроить grafana в мое приложение angularjs. Я могу сделать это легко с помощью простого iframe, но мое приложение использует jwt для аутентификации, и я не могу найти способ установить заголовок для iframe. Я подтвердил, что он отлично работает, когда я включаю аутентификацию с базовым iframe, но мне нужно, чтобы он был включен для использования.Вставить приложение angularjs в другое приложение angularjs

Я также попытался использовать $http, чтобы получить grafana html (таким образом, я могу установить свой jwt-заголовок), но js, похоже, не работает с использованием этого метода. Я предполагаю, что это связано с bootstraping, поскольку они загружаются вручную.

//iframe 
<iframe id="grafana" layout-fill flex></iframe> 

//controller 
    $http.get('/grafana/dashboard').then(function(response) { 
     var iframeDocument = document.getElementById('grafana').contentWindow.document 
     iframeDocument.open('text/html', 'replace') 
     iframeDocument.write(response.data) 
     iframeDocument.close() 
    }) 

Есть ли другой способ установить заголовок на iframe? Я также пытался использовать html grafana в качестве шаблона, но, как я уже говорил, их загрузка не работает в другом приложении.

+1

Это невозможно установить заголовок на фрейме. Iframe извлекается только через GET: т. Е. С URL-адресом и строкой запроса –

ответ

0

Вы cantry это таким образом, он должен работать:

$.ajax({ 
    type: "GET", 
    url: "/grafana/dashboard", 
    contentType: "application/json", 
    beforeSend: function(xhr, settings){ 
      xhr.setRequestHeader("some_custom_header", "foo");}, 
    success: function(data){ 
     $("#output_iframe_id").attr('src',"data:text/html;charset=utf-8," + escape(data)) 
    } 
}); 
Смежные вопросы