![](/img/trans.png)
[英]Error with Chrome extension - “Mixed Content: This request has been blocked; the content must be served over 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.