2016-03-02 65 views
0

正如标题所述,我有一个在我的项目中加载模板的角度指令“/views/modals/help.html”在https上阻止了有角templateUrl“此请求已被阻止;内容必须通过HTTPS提供。”

templateurl完美地在本地主机以及仅使用http的测试服务器上工作。但是,当我到达使用https的服务器时,出现错误:“此请求已被阻止;内容必须通过HTTPS提供。”

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

回答

2

好的,所以问题在于Angular在HTTPS页面上加载了templateUrl。我曾预料它会尝试通过HTTPS加载模板,因为角度,控制器,指令等都是通过HTTPS页面上的相对URL进行加载的,在我看来,这意味着它们被加载了HTTPS。

无论出于何种原因,角度未通过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

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

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

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

+0

我只是有点困惑,因为它加载一个相对URL“/view/modals/help.html”,应该是不会自动加载它通过https? – Justin

+0

如果你在你的网站上有https并且要加载一个https地址,那么它应该不是。 – KnuturO