<link rel="stylesheet/less" href="http://mycdn.s3.amazon.com/css/web/style.less">
<script src="http://mycdn.s3.amazon.com/css/less-1.1.5.min.js"></script>
当我将无文件放入我的CDN时,它说:
XMLHttpRequest无法加载 http://mycdn.s3.amazonaws.com/media/css/bootstrap/lib/bootstrap.less。 来源http://mydomain.com不被允许 访问控制允许来源。
为什么呢?我该如何解决?我不想在服务器端编译.css文件。我想让他们保持客户端。
答案 0 :(得分:4)
来自MDN的这篇相当长的文章将帮助您了解正在发生的事情 - https://developer.mozilla.org/En/HTTP_access_control
基本上你已经遇到了跨域安全模型
如果您坚持不想在服务器上编译CSS,您可以尝试从您自己的子域提供CSS,即将子域映射到Amazon CDN,但我不确定是否会解决你的问题。
我实际上质疑为什么你不想编译.CSS服务器端,因为这会为访问者带来最佳性能,并使你能够轻松地在CDN上托管CSS。
在HTML之后,CSS是进入浏览器的下一个最重要的项目,因此它可以开始布局和渲染页面,通过将JS插入到混合中,你可以减慢它的速度(特别是JS可以阻止并行)在某些浏览器中下载,并在执行时阻止UI线程
答案 1 :(得分:4)
Amazon S3现在支持跨源资源共享: http://aws.typepad.com/aws/2012/08/amazon-s3-cross-origin-resource-sharing.html
按照说明为您的存储桶添加CORS配置选项以解决问题。
答案 2 :(得分:0)
如果您想修复跨域访问,那么您需要查看跨源资源共享(http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing)等内容,但这仅适用于现代浏览器,或者JSONP,但我想你的CDN是不可能的。
我必须同意@Andy Davies,你为什么不编译.less因为这会解决这个问题?这是由于文件大小正在传递还是你不能编译。当你实时推送文件?在Visual Studio中,您可以使用http://www.mindscapehq.com/products/web-workbench之类的插件,这些插件将在发生更改时进行编译。