Ваша настройка исходит из предположения, что add_header добавит заголовки к ответу от proxy_pass, но это не так.
Либо ставьте заголовки в самом keeper_app, либо гуглите модуль, который может изменять заголовки после proxy_pass (типа modify proxy_pass headers nginx в гугле)
OPTIONS это так называемый preflight-запрос, который предваряет любые запросы на сторонние домены, согласно требованиям CORS.
Сервер должен уметь на него отвечать (а не просто метод должен быть прописан в заголовках).
Минимально сервер на OPTIONS должен ответить 200 OK и прислать заголовки CORS-политики.
Исходя из ответа на OPTIONS браузер делает вывод - слать данные или нет. У вас сервер отвечает ошибкой.
1) ionic прокси должен работать
2) Chrome, запущенный с флагом должен работать (но его нужно запускать с нуля - если Chrome уже открыт, то он просто на передний план вылезет, без применения флага, само собой)
Если не планируете впоследствии использовать API с "левых" доменов, то можете просто запустить Chrome с отключенной политикой безопасности.
В OS X это делается так:
$ open -a Google\ Chrome --args --disable-web-security
No 'Access-Control-Allow-Origin' header is present on the requested resource
на имеет к Yii никакого отношения, судя по вашему сетапу.
Я не силен в апаче, но по-моему у вас mod_headers добавляет эти ваши заголовки только в случае 200 статуса ответа, во всяком случае в документации написано так:
The default value of onsuccess may need to be changed to always under the circumstances similar to those listed below.
Попробуйте написать: Header always set Access-Control-Allow-Origin "*"