2011-01-05 6 views
0

Dans mon application Web lourd Javascript, j'ai des scripts qui sont chargés dans le code source HTML avec des balises, et d'autres que je charge selon la méthode ajax de jQuery.Ajax chargement de scripts (en utilisant jQuery) de CDN ne fonctionne pas

Je suis sur le point de transférer la plupart des actifs statiques de mon application vers un CDN (j'utilise AWS Cloudfront). Mes charges dynamiques ne fonctionnent plus. L'appel jQuery Ajax:

$.ajax({ 
    url: url, 
    dataType: 'script', 
    async: true, 
    success: function (content) { 
     .... 

déclenche la fonction de réussite, mais le contenu est vide. Je me demande si c'est parce qu'une telle demande enfreint le modèle de sécurité du navigateur pour les scripts inter-sites. Si c'est le cas, y a-t-il un chargement dynamique de scripts à partir d'un CDN? Ahhh ... Je n'utilise pas actuellement un alias CNAME pour l'hôte cloudfront. Cela permettrait-il de résoudre ce problème?

+0

Quelles sont les URL que vous utilisez? – Chandu

+0

Je ne l'ai pas encore fait, mais je suis à peu près certain que je dois configurer un CNAME avec mon DNS qui pointe vers mon Cloudfront, ET dire à Cloudfront sur le CNAME afin qu'il puisse répondre aux requêtes de mon référentiel. – Zhami

+0

Eh bien, j'ai un CNAME mis en place, mais comme c'est pour un sous-domaine, cela n'a pas aidé parce que la politique de même origine ne permet pas de charger des scripts à partir de sous-domaines. – Zhami

Répondre

1

Vous avez raison, c'est la sécurité des scripts intersite qui empêche cela.

Vous pouvez utiliser la méthode jQuery.getScript() pour le charger à partir d'un domaine externe (ou interne).

+1

jQuery.getScript utilise jQuery.ajax, donc je suis toujours confronté au même problème. – Zhami

Questions connexes