在另一个 angularjs 应用程序中嵌入 angularjs 应用程序

Embed angularjs app in another angularjs app

本文关键字:angularjs 应用程序 另一个      更新时间:2023-09-26

我正在尝试将grafana嵌入到我的angularjs应用程序中。我可以使用简单的 iframe 轻松完成,但我的应用程序使用 jwt 进行身份验证,我找不到为 iframe 设置标头的方法。我已经确认,当我使用基本 iframe 关闭身份验证时,它工作得很好,但我需要启用它才能在生产中使用。

我也尝试使用$http来获取 grafana html(这样我就可以设置我的 jwt 标头),但 js 似乎无法使用这种方法。我认为这与引导有关,因为它们是手动引导的。

//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 上设置标题吗?我也尝试仅使用 grafana 的 html 作为模板,但正如我之前所说,他们的引导似乎在另一个应用程序中不起作用。

你可以这样尝试,它应该可以工作:

$.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))
    }
});