2016-04-18 12 views
0

ich diesen Fehler:Warum benötigt Angular2 CORS beim Laden von main.js von einem fremden Server?

XMLHttpRequest cannot load http://otherwebsite.com/myapp/app/main.js. 
No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'http://otherwebsite.com' is therefore not allowed access. 

wenn eine main.js Datei in Angular2 Referenzierung:

System.import('http://otherwebsite.com/myapp/app/main') 

aber keine andere Js-Dateien benötigen CORS von der anderen Seite gezogen.

Ich weiß, wie CORS support for Web API 2 für Methoden hinzufügen, aber das ist keine Methode. Ich weiß, wie man CORS support for Apache folders in .htaccess Dateien hinzufügt. Und mit ein wenig Graben habe ich herausgefunden, wie man IIS 7 CORS folder support hinzufügt, die diesen Fehler verschwinden ließ.

Kaufen warum würde Angular2 CORS für meine main.js benötigen, wenn alle anderen .js-Dateien ohne CORS-Probleme geladen sind?

+2

Externe js-Dateien sind eine eingeschränkte Ressource und erfordern CORS-Header. Dies würde für alle Skripte nicht nur angular gelten. Der Fehler kommt vom Browser. Fehle ich etwas? –

+0

Kannst du ein Plunk posten, das das reproduziert? – drewmoore

+0

@drewmoore Ich habe die Angular 2 [Quickstart] (https://angular.io/docs/ts/latest/quickstart.html), aber alle Javascript-Code von einer anderen URL verknüpft. Die Kuriosität war, dass Angular 2 von der anderen Seite ohne CORS geladen wurde, aber als es versuchte, meinen Code (main.js) zu laden, scheiterte es mit CORS-Fehlern. –

Antwort

1

Wenn das Skript von einer anderen Domäne geladen wird (was auch einen anderen IP-Port bedeutet) als index.html ursprünglich geladen wurde, muss der Server, von dem Sie eine Datei anfordern, die CORS-Header bereitstellen, da der Browser dies nicht zulässt um es zu holen.

+0

Ich dachte nur, dass es seltsam war, dass nur meine Javascripts CORS brauchten, wenn das gesamte JavaScript von der anderen Seite kam, ohne dass CORS in Ordnung war. –