Приложения CORS и phonegap
Нужны ли в приложениях телефонной связи любые изменения CORS (например, настройка Access-Control-Allow-Origin: *)? У меня есть успокоившийся API, размещенный на Heroku, и задавался вопросом, нужно ли мне устанавливать этот заголовок, чтобы мое приложение для телефонных разговоров вызывало службу?
Я думал, что, поскольку приложение для телефонных разговоров на самом деле не размещено в домене, тогда CORS не требуется, и я не буду получать проблемы с перекрестным доменом?
Было бы здорово, если бы кто-нибудь мог объяснить мне, почему это или нет.
Ответы
Ответ 1
PhoneGap вы можете просто XHR напрямую на удаленные серверы, и это
должен "просто работать". Междоменная политика не применяется к PhoneGap
(по разным причинам, в основном потому, что ваше приложение по существу
запуск файла://URI on-device).
Помните, что вам нужно настроить белый список для своих приложений
для доступа к этим внешним доменам. Проверьте эту ссылку:
http://docs.phonegap.com/en/1.8.0rc1/guide_whitelist_index.md.html#Domain%20Whitelist%20Guide
Ответ 2
Ни одна из платформ по умолчанию для платформы Cordova (PhoneGap) не требует CORS, несмотря на то, что файлы HTML размещаются локально (file://
) и обращаются к веб-домену.
Однако, на iOS, если вы переключитесь с UIWebView
на новый WKWebView
через cordova-plugin-wkwebview-engine, вы действительно должны внедрить CORS.
Ответ 3
Да Вам нужно активировать CORS на сервере, на котором размещен ваш API.
Я запускаю приложение Phonegap для iOS. Мое приложение запрашивает json из API сервера на Apache.
Я активирую CORS на сервере, чтобы получить данные, иначе я ничего не получаю в своем приложении, никаких ошибок и данных.
Обратите внимание, что параметр доступа в файле конфигурации позволяет фильтровать, какой домен вашего приложения разрешен для запроса, но ничего не делает с разрешениями сервера.
Ответ 4
Как и в случае с кордорой 5, вам нужно добавить плагин с белым списком
https://github.com/apache/cordova-plugin-whitelist
В файле config.xml add
<!-- Don't block any requests -->
<access origin="*" />