2011-01-05 12 views
0

In meinem Javascript schwer Web-Anwendung, habe ich einige Skripte, die in der Quell-HTML mit Tags geladen sind, und andere, die ich geladen wie benötigt mit jQuery's Ajax-Methode.Ajax Laden von Skripten (mit jQuery) von CDN funktioniert nicht

Ich bin dabei, die meisten statischen Assets meiner App auf ein CDN zu verlagern (ich verwende AWS Cloudfront). Meine dynamischen Lasten funktionieren nicht mehr. Der jQuery Ajax-Aufruf:

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

löst die Erfolgsfunktion, aber der Inhalt ist leer.

Ich frage mich, ob dies daran liegt, dass eine solche Anfrage das Sicherheitsmodell des Browsers für Cross-Site-Scripting verletzt. Wenn das der Fall ist, sollen Skripte dynamisch von einem CDN geladen werden? Ahhh ... Ich verwende derzeit keinen CNAME-Alias ​​für den Cloudfront-Host. Würde dies das Problem lösen?

+0

Welche URLs verwenden Sie? – Chandu

+0

Ich habe das noch nicht getan, aber ich bin mir ziemlich sicher, dass ich einen CNAME mit meinem DNS einrichten muss, der auf meine Cloudfront verweist UND Cloudfront den CNAME mitteilt, damit er die Anfragen aus meinem Repository erfüllen kann. – Zhami

+0

Nun, ich habe ein CNAME eingerichtet, aber wie es für eine Sub-Domain ist, hat es nicht geholfen, weil die gleiche Herkunft-Richtlinie das Laden von Skripten von Sub-Domains nicht erlaubt. – Zhami

Antwort

1

Sie haben recht, es ist die Cross-Site-Scripting-Sicherheit, die dies verhindert.

Sie können die Methode jQuery.getScript() verwenden, um es von einer externen Domäne (oder intern) zu laden.

+1

jQuery.getScript verwendet jQuery.ajax, sodass ich immer noch das gleiche Problem habe. – Zhami