2012-10-02 72 views
1

我在AngularJS中創建了一個利用templateUrl鍵的自定義指令。我正在運行的問題是我們將這些模板文件託管在外部CDN上,所以我得到了Access-Control-Allow-Origin錯誤。使用templateURL從AngularJS中的外部資源加載

XMLHttpRequest cannot load http://path_to_cdn/template_file.html. Origin http://xx.xx.xx.xx is not allowed by Access-Control-Allow-Origin. 

我讀的地方,我可以做這樣的事情...

<script type="text/ng-template" src="http://path_to_cdn/template_file.html"></script> 

...但是這是不是真的很理想,我不能讓它正常工作呢。

任何人有任何建議嗎?

回答

3

問題是服務器端。這是一個方法來解決它

假設你能同時訪問服務器,你這樣做:

首先術語

域1:它加載,使templateURL請求的JavaScript域

域2:從您正試圖從

得到模板必須設置在響應訪問控制允許來源選項域域2的頭。它的值應該是域1的網址。

+0

是否有另一種方法來做到這一點(我將不得不向服務器人提交請求,並等待他們接近它) - 可能與.htaccess也許?我有FTP訪問權限。 – Dustin

+0

問題是大多數瀏覽器不允許這樣的請求。一些愚蠢的安全問題。 這可能有所幫助:http://usejquery.com/posts/the-jquery-cross-domain-ajax-guide,儘管我個人認爲與您的CDN團隊交談是最佳選擇。 –

+0

如果您無法讓CDN發送正確的標題,您可以在服務器中添加一個反向代理以自行注入標題。 – Guillaume86