2012-10-02 47 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