PhoneGap не хочет использовать сервис REST, независимо от того, что я делаю

0

У меня есть приложение PhoneGap, с которым я использую AngularJS. Я использую довольно простой вызов $ http для моего внутреннего узла:

$http.get("http://localhost:6969/random")
   .then(function(response) {
        $scope.images = response.data;
  });

Независимо от этого, PhoneGap никогда не попадает в бэкэнд. Я тестировал его в обычном браузере, и он работает так, как ожидалось.

Я, очевидно, прочитал кучу об этом, и большинство людей исправило это, используя белый список, но в моем config.xml мой белый список примерно такой же открытый, насколько это возможно:

<plugin name="cordova-plugin-whitelist" source="npm" spec="1.1.0" />
  <allow-navigation href="*" subdomains="true" />
  <allow-intent href="*" subdomains="true"/>
  <access origin="*" subdomains="true"/> <!-- Required for iOS9 -->

Что мне нужно изменить? Борьба с этой ошибкой в течение нескольких выходных дней, и это немного раздражает, чтобы не создавать реальные интересные функции в свободное время.

EDIT: я обслуживаю приложение, используя phonegap serve и тестирую ее с помощью приложения PhoneGap Developer.

  • 0
    Вы установили плагин белого списка? Что возвращает плагин Cordova -l?
  • 0
    Да, я просто попытался переустановить его, чтобы убедиться, и он говорит, что client git:(master) ✗ cordova plugin add cordova-plugin-whitelist Plugin "cordova-plugin-whitelist" already installed on android. Plugin "cordova-plugin-whitelist" already installed on browser.
Показать ещё 9 комментариев
Теги:
cordova
phonegap-cli

1 ответ

1
Лучший ответ

Я бы предложил, чтобы ваша политика безопасности контента, возможно, понадобилась изменить, чтобы включить предложение connect-src, чтобы указать, куда могут обращаться запросы Ajax.

Принимая метатег CSP, который вы разместили в комментариях:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src: 'self' 'unsafe-inline' 'unsafe-eval'"/>

Я бы предложил внести поправки в это, чтобы открыть Ajax-запросы в любом месте, посмотреть, поможет ли это затем правильному домену, который вы хотите поддержать.

Предлагаемый CSP будет:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src *">

Если это работает и вы хотите заблокировать до одного домена позже, вам нужно что-то вроде:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src http://api.mydomain.com">

Кроме того, я думаю, вам нужно будет изменить код приложения для подключения к вашему серверу по имени хоста или IP-адресу, чтобы на устройстве он не путал "localhost" с самим устройством и пытался подключиться к порту 6969 на Устройство.

Так:

$http.get("http://localhost:6969/random")

Может понадобиться стать:

$http.get("http://myhost.mydomain.com:6969/random")

Или

$http.get("http://xxx.xxx.xxx.xxx:6969/random")

Там некоторые ресурсы в этом онлайн:

  • 0
    Это не сильно изменилось с первой попытки. Я читаю ваш пост и надеюсь, что это поможет. Есть ли изменение, что приложение PhoneGap Developer не учитывает изменения в моем config.xml или теге <meta>?
  • 0
    Вы пробовали развернуть по-настоящему на устройстве / эмуляторе? К сожалению, я не знаком с тонкостями приложения PhoneGap Developer.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню