【问题标题】:Angular templateUrl blocked on https "This request has been blocked; the content must be served over HTTPS."Angular templateUrl 在 https 上被阻止“此请求已被阻止;内容必须通过 HTTPS 提供。”
【发布时间】:2016-03-02 14:29:27
【问题描述】:

正如标题所述,我有一个角度指令在我的项目“/views/modals/help.html”中加载模板

templateurl 在 localhost 和仅使用 http 的测试服务器上完美运行。但是,当我到达使用 https 的服务器时,我收到错误消息:“此请求已被阻止;内容必须通过 HTTPS 提供。”

我找不到任何有关如何将 templateUrl 与 https 一起使用的文档。任何帮助表示赞赏!

【问题讨论】:

    标签: javascript angularjs angularjs-directive https


    【解决方案1】:

    好的,所以问题是 Angular 在 HTTPS 页面上加载了一个 templateUrl。我原以为它会尝试通过 HTTPS 加载模板,因为 Angular、控制器、指令等是通过 HTTPS 页面上的相对 URL 加载的,在我看来,这意味着它们是使用 HTTPS 加载的。

    无论出于何种原因,Angular 都没有通过 HTTPS 加载模板。所以我稍微改变了我的指令:

    templateUrl: function() {
        var useHTTPS = window.location.href.indexOf('https') > -1;
        if (useHTTPS) {
            return 'https://www.example.com/path/to/htmlfile.html';
        } else {
            return '/path/to/htmlfile.html';
        }
    }
    

    【讨论】:

      【解决方案2】:

      问题是,如果您加载 https 网页,页面上的所有资源也必须使用 https 进行检索。

      因此,如果您的模板从 http 主机检索到 https 主机,它们将被阻止。源主机必须实现 https。

      p.s 另一件事 https://letsencrypt.org/ 已开始为您的服务器提供免费的 https 认证。当他们与 Cisco、Chrome 和 Mozilla 等巨头合作时,这看起来是一个很有前途的项目。

      【讨论】:

      • 我只是有点困惑,因为它正在加载一个相对 url '/view/modals/help.html',不应该通过 https 自动加载它吗?
      • 如果您的网站上有 https 并转到 https 地址进行加载,那么它应该没有。
      猜你喜欢
      • 2015-03-23
      • 2018-12-18
      • 2016-08-28
      • 1970-01-01
      • 1970-01-01
      • 2021-08-29
      • 2022-01-11
      • 2016-03-01
      • 2018-08-30
      相关资源
      最近更新 更多