2012-01-30 26 views
6
<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> 

Khi tôi đặt tập tin .less tôi trong CDN của tôi, nó nói:Less.js không hoạt động với CDN?

XMLHttpRequest không thể tải http://mycdn.s3.amazonaws.com/media/css/bootstrap/lib/bootstrap.less. Xuất xứ http://mydomain.com không được phép bởi Access-Control-Allow-Origin.

Tại sao? Làm thế nào để sửa lỗi này? Tôi KHÔNG muốn biên dịch các tệp .css ở phía máy chủ. Tôi muốn giữ khách hàng của họ.

+0

Có thể trùng lặp http://stackoverflow.com/questions/8176913/xmlhttprequest-origin-is-not-allowed-by-access-control-allow-origin –

+1

Trên ghi chú cho bất kỳ ai khác kết thúc tại đây: Tôi đã nhận được lỗi tương tự trên máy chủ web của máy chủ web của tôi. Nó đã gửi nhầm câu trả lời trống bởi vì tập tin '.less'/mime không được biết. Cấu hình máy chủ web để phục vụ đúng cách các tệp .less đã sửa nó. (Đó không phải là yêu cầu tên miền chéo, tất cả các tệp '.js' /' .less' được phục vụ từ cùng một thư mục.) –

Trả lời

4

này bài viết khá dài từ MDN sẽ giúp bạn hiểu những gì đang xảy ra - https://developer.mozilla.org/En/HTTP_access_control

Về cơ bản bạn đã chạy vào mô hình bảo mật cross-domain

Nếu bạn đang kiên quyết rằng bạn không muốn để biên dịch CSS trên máy chủ, bạn có thể thử phục vụ nó từ tên miền phụ của bạn, tức là ánh xạ một miền phụ tới Amazon CDN nhưng tôi không chắc chắn rằng sẽ khắc phục được sự cố của bạn.

Tôi thực sự đặt câu hỏi tại sao bạn không muốn biên dịch phía máy chủ .CSS vì điều này sẽ mang lại hiệu suất tốt nhất cho khách truy cập của bạn và cho phép bạn dễ dàng lưu trữ CSS trên CDN.

Sau HTML, CSS là mục quan trọng nhất tiếp theo để vào trình duyệt để có thể bắt đầu bố cục và hiển thị trang, bằng cách chèn JS vào kết hợp bạn làm chậm xuống (cụ thể là JS có thể chặn tải xuống song song trong một số trình duyệt và sẽ chặn chuỗi giao diện người dùng trong khi thực thi)

+1

Một lý do khác để biên dịch trước CSS: Người dùng có thể đã tắt JavaScript (http: // noscript .mạng lưới). Kết quả là, CSS LESS sẽ không được phân tích cú pháp. –

+0

Bạn có nghĩ rằng một tên miền phụ cho Amazon CDN giải quyết vấn đề? – TIMEX

+1

Bạn có thể thử thêm tiêu đề HTTP sau đây 'Access-Control-Allow-Origin: http: // mycdn.s3.amazon.com' –

0

Nếu bạn muốn sửa quyền truy cập tên miền chéo thì bạn cần xem xét những thứ như Chia sẻ tài nguyên nguồn gốc chéo (http://en.wikipedia.org)/wiki/Cross-Origin_Resource_Sharing) nhưng điều này chỉ được hỗ trợ bởi các trình duyệt hiện đại, hoặc JSONP nhưng điều này sẽ không thể thực hiện được với CDN của bạn.

Tôi phải đồng ý với @Andy Davies rằng tại sao bạn không biên soạn .less vì điều này sẽ khắc phục được sự cố? điều này là do kích thước tệp được phân phối hay bạn không thể biên dịch .less khi bạn đẩy tệp trực tiếp? Trong Visual Studio, bạn có thể sử dụng các addins như http://www.mindscapehq.com/products/web-workbench sẽ biên dịch khi thay đổi xảy ra.

Các vấn đề liên quan