2016-03-02 74 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