Less.js不适用于CDN?

时间:2012-01-30 08:39:54

标签: javascript html css cdn less

<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文件。我想让他们保持客户端。

3 个答案:

答案 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之类的插件,这些插件将在发生更改时进行编译。