2012-01-30 22 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> 

Cuando pongo mi archivo .less en mi CDN, que dice:Less.js no funciona con CDN?

XMLHttpRequest no puede cargar http://mycdn.s3.amazonaws.com/media/css/bootstrap/lib/bootstrap.less. Origen http://mydomain.com no está permitido por Access-Control-Allow-Origin.

¿Por qué? ¿Cómo puedo solucionar esto? NO quiero compilar archivos .css en el servidor. Quiero mantenerlos del lado del cliente.

+0

Posible duplicado http://stackoverflow.com/questions/8176913/xmlhttprequest-origin-is-not-allowed-by-access-control-allow-origin –

+1

En una nota para cualquier persona que termine aquí: Tengo Obtenido el mismo error en el servidor web de mi servidor web. Erróneamente enviaba respuestas vacías porque el tipo '.less' file/mime era desconocido. La configuración del servidor web para servir correctamente los archivos .less lo solucionó. (No fue una solicitud de dominio cruzado, todos los archivos '.js' /' .less' se sirvieron desde la misma carpeta.) –

Respuesta

4

Este artículo bastante largo del MDN le ayudará a entender lo que está pasando - https://developer.mozilla.org/En/HTTP_access_control

Básicamente le han acabado en el modelo de seguridad entre dominios

Si está convencido de que no desea para compilar CSS en el servidor, podría intentar servirlo desde su propio subdominio, es decir, asignar un subdominio a Amazon CDN, pero no estoy seguro de que eso solucione su problema.

Realmente me pregunto por qué no quiere compilar el servidor .CSS, ya que esto dará como resultado el mejor rendimiento para sus visitantes y le permite alojar fácilmente el CSS en un CDN.

Después del HTML, el CSS es el siguiente elemento más importante para acceder al navegador, de modo que puede comenzar el diseño y el procesamiento de una página, insertando JS en la mezcla lo reduces (especialmente porque JS puede bloquear descargas paralelas en algunos navegadores, y bloquearán el subproceso de la interfaz de usuario mientras se ejecuta)

+1

Otra razón para precompilar el CSS: los usuarios pueden haber deshabilitado JavaScript (http: // noscript .red). Como resultado, el LESS CSS no se analizará. –

+0

¿Cree que un subdominio de Amazon CDN resuelve el problema? – TIMEX

+1

Puede intentar agregar el siguiente encabezado HTTP 'Access-Control-Allow-Origin: http: // mycdn.s3.amazon.com' –

0

Si desea arreglar el acceso de dominio cruzado, entonces debe mirar cosas como Cross Origin Resource Sharing (http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing) pero esto solo es compatible con navegadores modernos, o JSONP, pero creo que esto no sería posible con tu CDN.

Tengo que estar de acuerdo con @Andy Davies, ¿por qué no compila el .less ya que esto solucionaría el problema? ¿Esto se debe al tamaño del archivo que se entrega o no se puede compilar. menos a medida que empuja los archivos en vivo? En Visual Studio puede usar complementos como http://www.mindscapehq.com/products/web-workbench que se compilarán cuando se produzcan cambios.