Angular templateUrl在https&#34上被阻止;此请求已被阻止;内容必须通过HTTPS提供。"

时间:2016-03-02 14:29:28

标签: javascript angularjs angularjs-directive https

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

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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

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