Подтвердить что ты не робот

Запросы Ajax терпят неудачу после обновления до Кордовы 5.0 + [email protected]

Недавно я обновился до Cordova 5.0 (и Cordova Android 4.0), и с тех пор мое приложение больше не может обращаться к внешним ресурсам.

У меня все еще есть <access origin="*" /> в config.xml(как и раньше), и у меня все еще есть <uses-permission android:name="android.permission.INTERNET" /> в AndroidManifest.xml(как и раньше), но ajax-вызовы отклоняются без объяснения (параметр "textStatus" error ", параметр" errorThrown "равен null, а xhr.state() возвращает" reject ").

Я проверял, что ни один запрос не попадает на сервер, поэтому он кажется, что он остановлен Android, но журнал не дает никаких объяснений относительно того, почему...

Я могу получить доступ к указанному URL-адресу в браузере Android, просто не из приложения.

Запрос ajax выполняется по вызову Backbone.sync() Backbone.js, который в итоге вызывает jquery $.ajax(). Я ничего не изменил о том, как делается звонок... просто обновил кордову.

Есть ли новые требования/настройки для сетевых запросов в Cordova 5.0 или что-то еще, что мне нужно сделать иначе, чем предыдущие версии Кордовы?

Кто-нибудь знает, как я могу получить дополнительную информацию о том, почему Android и/или Кордова отклоняют запрос?

4b9b3361

Ответ 1

Я проследил виновника до платформы [email protected] кордовы. Теперь требуется новый плагин cordova-plugin-whitelist.

Его можно установить с помощью

cordova plugin add cordova-plugin-whitelist

или добавив

<plugin name="cordova-plugin-whitelist" spec="1" />

в config.xml, а затем он настроен с

<allow-navigation href="*" />

вместо старого тега <access origin="*" />.

Немного раздражает, что журнал больше не выплевывает сообщения об ошибках "whitelist rejection", когда возникает такая проблема (это бы сэкономило мне тонну), но, возможно, это произойдет позже.

Ответ 2

Две вещи

  • Убедитесь, что URL-адрес ajax, который вы используете, позволяет запрашивать запросы перекрестного происхождения.
  • Вы передаете соответствующие заголовки при запросах на перекрестный поиск.

Для чтения

http://enable-cors.org/

Как включить CORS в AngularJs

http://backbonetutorials.com/cross-domain-sessions/

Ответ 3

В Cordova 6.X вам нужно удалить встроенный "белый список" и переустановить новую версию плагина.

cordova plugin remove cordova-plugin-whitelist

и установите плагин

cordova plugin add cordova-plugin-whitelist

а затем замените <allow-navigation href="*" /> на файл config.xml вместо <access origin="*" /> в моем случае этот трюк работал.

Ответ 4

Если вы используете cordova 6.x.x, вам нужно удалить встроенный кордовый плагин-белый список с помощью

плагин cordova remove cordova-plugin-whitelist

и переустановите его, используя

плагин cordova добавить cordova-plugin-whitelist

даже если проблема сохраняется, перезапустите командную строку и попробуйте.