繁体   English   中英

在https上阻止了Angular templateUrl。 内容必须通过HTTPS提供。”

[英]Angular templateUrl blocked on https “This request has been blocked; the content must be served over HTTPS.”

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

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

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

好的,问题是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';
    }
}

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM