正如標題所述,我有一個在我的項目中加載模板的角度指令「/views/modals/help.html」在https上阻止了有角templateUrl「此請求已被阻止;內容必須通過HTTPS提供。」
templateurl完美地在本地主機以及僅使用http的測試服務器上工作。但是,當我到達使用https的服務器時,出現錯誤:「此請求已被阻止;內容必須通過HTTPS提供。」
我找不到任何有關如何在https上使用templateUrl的文檔。任何幫助表示讚賞!
正如標題所述,我有一個在我的項目中加載模板的角度指令「/views/modals/help.html」在https上阻止了有角templateUrl「此請求已被阻止;內容必須通過HTTPS提供。」
templateurl完美地在本地主機以及僅使用http的測試服務器上工作。但是,當我到達使用https的服務器時,出現錯誤:「此請求已被阻止;內容必須通過HTTPS提供。」
我找不到任何有關如何在https上使用templateUrl的文檔。任何幫助表示讚賞!
好的,所以問題在於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';
}
}
問題是,如果你加載一個https網頁,頁面上的所有資源都必須使用https檢索。
因此,如果您的模板從http主機檢索到https主機,它們將被阻止。源主機必須實現https。
p.s另一件事https://letsencrypt.org/已經開始爲您的服務器提供免費的https認證。當他們與思科,Chrome和Mozilla等巨頭合作時,看起來像一個有前景的項目。
我只是有點困惑,因爲它加載一個相對URL「/view/modals/help.html」,應該是不會自動加載它通過https? – Justin
如果你在你的網站上有https並且要加載一個https地址,那麼它應該不是。 – KnuturO