CORS проблема с appgyver?

Я использую Angular с пакетом AppGyver для простого приложения CRUD. Мои запросы GET и POST нормально работали с моим удаленным API (PHP REST Server), пока я не развернул в облаке. Оттуда PHP никогда не получает данные POST.

Я открываю доступ к CORS с помощью пользовательских заголовков в NGINX

Запустив tcpdump на моем сервере, я обнаружил эти различия в заголовках, отправляемых до и после развертывания в облаке.

IOS SIMULATOR::: WORKS----
Content-Length: 26
Accept: application/json, text/plain, */*
Content-Type: application/jsonDEPLOY TO CLOUD::: DOESN'T------
Access-Control-Request-Method: POST
Accept: */*
Access-Control-Request-Headers: accept, origin, content-type
Content-Length: 0

Я предполагаю, что это проблема CORS, которую я не вижу … очень расстраивает!

(также пытался использовать подписанный сертификат SSL вместо прямого HTTP, без изменений)

Мои заголовки NGINX:

add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Key,accept,origin,content-type,X-Requested-With,steroidsAppId,steroidsApiKey,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

add_header "Access-Control-Request-Method" "POST";
add_header "Access-Control-Allow-Credentials" true;

0

Решение

Мне удалось это выяснить. Не пытаясь полностью понять CORS, я виноват.

Однако ребята из AppGyver упомянули, что те же самые заголовки отправляются, когда приложение тестируется локально и развертывается в облаке, однако это не так …

Наблюдая за журналами NGINX, я заметил, что перед каждым запросом выполнялась проверка «перед полетом» с использованием глагола OPTIONS. После развертывания в облаке второй запрос был прерван. Я использовал этот конфиг, чтобы открыть доступ

https://michielkalkman.com/snippets/nginx-cors-open-configuration.html

0

Другие решения

Если вы используете работающий сервер для приложения REST и сталкиваетесь с проблемами CORS. Я бы посоветовал вам использовать прокси-сервер Ionic для выполнения всех ваших запросов. Вы не будете работать в любом запросе OPTION и т. Д. И т. Д.

Проверьте этот Выделите «Дополнительные параметры обслуживания», а затем «Сервисные прокси».

0

По вопросам рекламы [email protected]