Ионное приложение и Access-Control-Allow-Headers на Nginx - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть приложение Ionic, использующее API, размещенный на сайте, и с ionic serve и плагином Chrome Cors я могу использовать приложение.
Когда я пробую его на эмуляторе ios с ionic cordova run ios,приложение запускается, но содержимое не отображается.

Использование safari в качестве отладчика Я обнаружил проблему:

Не удалось загрузить ресурс: поле заголовка запроса User-Agent не разрешено Access-Control-Allow-Headers.

Проблема в том, что на моем сайте, который является установкой Wordpress, у меня есть этот код:

function add_cors_http_header(){
    header("Access-Control-Allow-Origin: *");
    header('Access-Control-Allow-Methods: GET, POST, OPTIONS, DELETE, PUT');
    header('Access-Control-Allow-Headers: Origin, User-Agent, Content-Type, Accept, Authorization, X-Request-With, X-CLIENT-ID, X-CLIENT-SECRET');
    header('Access-Control-Allow-Credentials: true');
}
add_action('init','add_cors_http_header');

и, как вы можете видеть User-Agent разрешено в заголовках.
Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 12 сентября 2018

Вы должны использовать конфигурацию служебного прокси-сервера для Ionic вместо случайного предоставления этих разрешений.

Добавьте это в свой ionic.config.json:

...
proxies: [
    {path: "/path/to/resource", proxyUrl: "http://myserver.com/path/to/resource"}
]
...

См. Эту ссылку: https://ionicframework.com/docs/cli/configuring.html

Я обычно помещаю эти URL в файл конфигурации.Я поддерживаю два файла для разработки и производственного использования.После развертывания приложения на устройстве вы можете снова использовать обычные URL-адреса (рабочий файл конфигурации), потому что запросы во многих источниках не запрещены во встроенных WebView.

...