2016-09-28 2 views
0

Я пишу проект с интерфейсом Angular2 и бэкэнд REST WebAPI, используя php.Angular2 Test Data Without CORS

Я запускал/отлаживал интерфейс, используя npm's lite server (aka npm start). До сих пор я использовал in-memory-web-api для обслуживания данных, но я готов начать потреблять реальные данные из бэкэнд.

В производстве оба интерфейса и бэкэнд будут обслуживаться с одного сервера Apache, но в разработке я использовал npm для запуска Angular2 и отдельного сервера Apache для запуска API.

Моя проблема заключается в том, что npm работает на localhost:3000 и Apache на localhost:80. Это создает проблемы с перекрестным уровнем безопасности, и единственный способ, которым я могу получить данные приложения Angular2, - это включить CORS в мой REST API. Я не хочу включать CORS на бэкэнд, если я могу избежать этого, потому что я обеспокоен тем, что он может каким-то образом сделать это в производство.

До сих пор сервер npm's был очень милым, потому что он автоматически компилирует мои файлы .ts и обновляет браузер всякий раз, когда он обнаруживает изменения в файлах. Мне бы действительно не пришлось переносить мою разработку Angular2 в Apache, если только не существует способа сохранить эти приятные функции.

Есть ли способ сохранить эти две вещи отдельно, не включив CORS?

Если нет, есть ли способ, которым я могу объединить эти два, сохраняя при этом приятные функции npm?

ответ

1

Настройте сервер приложений разработки на запросы прокси-сервера для сервера REST разработки. Затем делайте те же запросы о происхождении.

В качестве альтернативы используйте .htaccess, чтобы включить заголовок CORS, но добавьте его в .gitignore (или эквивалент вашей системы контроля версий), чтобы гарантировать, что он не работает.

В качестве альтернативы, если ваш сервер REST имеет конфигурационную систему. Используйте это, чтобы включить CORS в разработке (и снова убедитесь, что файл конфигурации не поддерживается версией).