【问题标题】:Using templateURL to load from an external resource in AngularJS在 AngularJS 中使用 templateURL 从外部资源加载
【发布时间】:2012-10-02 17:02:41
【问题描述】:

我正在 AngularJS 中创建一个利用 templateUrl 键的自定义指令。我遇到的问题是我们将这些模板文件托管在外部 CDN 上,因此出现 Access-Control-Allow-Origin 错误。

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>

...但这并不是很理想,无论如何我无法让它正常工作。

大家有什么建议吗?

【问题讨论】:

    标签: javascript javascript-framework angularjs directive


    【解决方案1】:

    问题出在服务器端。这是解决它的一种方法

    假设您可以访问这两个服务器,您可以这样做:

    首先是术语

    域 1:加载发出 templateURL 请求的 javascript 的域

    域 2:您尝试从中获取模板的域

    您必须在域 2 的 response 标头中设置 Access-Control-Allow-Origin 选项。它的值应该是域 1 的 url。

    【讨论】:

    • 还有其他方法可以做到这一点(我必须向服务器人员提交请求并等到他们处理它) - 可能使用 .htaccess 吗?我确实有 FTP 访问权限。
    • 问题是大多数浏览器不允许这样的请求。一些愚蠢的安全问题。这可能会有所帮助:usejquery.com/posts/the-jquery-cross-domain-ajax-guide,尽管我个人认为与您的 CDN 团队交谈是最好的选择。
    • 如果您无法让 CDN 发送正确的标头,您可以在您的服务器中添加反向代理来自己注入标头。
    • Guillaume86,你能指出我可以学习如何做到这一点的方向吗?
    猜你喜欢
    • 2014-02-13
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 2013-04-21
    相关资源
    最近更新 更多