2016-09-28 5 views
0

Ich schreibe ein Projekt mit einem Angular2-Frontend und einem REST-WebAPI-Backend mit PHP.Angular2 Testdaten ohne CORS

Ich habe das Frontend unter Verwendung npm's Lite-Server ausgeführt/debuggen (aka npm start). Bis jetzt habe ich die in-memory-web-api verwendet, um Daten zu liefern, aber ich bin bereit, mit dem Konsum von echten Daten aus dem Backend zu beginnen.

In der Produktion würden sowohl Frontend als auch Backend vom selben Apache Server bedient, aber in der Entwicklung habe ich npm benutzt, um Angular2 und einen separaten Apache Server laufen zu lassen, um die API laufen zu lassen.

Mein Problem ist, dass npm auf localhost:3000 läuft und Apache auf localhost:80. Dies führt zu Cross-Source-Sicherheitsproblemen, und die einzige Möglichkeit, mit der meine Angular2-App Daten abrufen kann, besteht darin, CORS in meiner REST-API zu aktivieren. Ich möchte CORS nicht im Backend aktivieren, wenn ich es vermeiden kann, weil ich mir Sorgen mache, dass es irgendwie in die Produktion kommen könnte.

Bis jetzt npm's Server war wirklich nett, weil es meine .ts Akten automatisch kompiliert und den Browser erneuert, wann immer er eine Änderung zu den Akten findet. Ich würde wirklich nicht meine Angular2-Entwicklung in Apache verschieben müssen, es sei denn, es gibt eine Möglichkeit, diese netten Funktionen zu behalten.

Gibt es eine Möglichkeit, diese beiden Dinge getrennt zu halten, ohne CORS aktivieren zu müssen?

Wenn nicht, gibt es einen Weg, ich kann die beiden zusammenführen, während npm die netten Funktionen behalten?

Antwort

1

Konfigurieren Sie Ihren Entwicklungsanwendungsserver für Proxyanforderungen an den Entwicklungs-REST-Server. Stellen Sie dann die gleichen Ursprungsanforderungen.

Verwenden Sie alternativ .htaccess, um CORS-Header einzuschalten, aber fügen Sie ihn .gitignore (oder das Äquivalent Ihres Versionskontrollsystems) hinzu, um sicherzustellen, dass er nicht mehr produziert wird.

Alternativ, wenn Ihr REST-Server über ein Konfigurationssystem verfügt. Verwenden Sie das, um CORS in der Entwicklung einzuschalten (und stellen Sie wiederum sicher, dass die Konfigurationsdatei nicht mehr der Versionskontrolle unterliegt).