Angular templateUrl 在 https 上被阻止 “此请求已被阻止;内容必须通过HTTPS提供

Angular templateUrl blocked on https "This request has been blocked; the content must be served over HTTPS."

本文关键字:提供 HTTPS 请求 https templateUrl Angular      更新时间:2023-09-26

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

模板网址在本地主机和仅使用 http 的测试服务器上完美运行。但是,当我到达使用 https 的服务器时,出现错误:"此请求已被阻止;内容必须通过HTTPS提供。

我找不到任何讨论如何将模板URL与https一起使用的文档。任何帮助不胜感激!

好的,所以问题是Angular在HTTPS页面上加载了一个templateUrl。我原本希望它会尝试通过 HTTPS 加载模板,因为角度、控制器、指令等是通过 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';
    }
}

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

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

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