Я пытаюсь отладить свое приложение для Android, созданное с помощью Cordova, через USB.

Мое устройство отображается в adb и chrome://inspect, и я перенаправил его через порт для подключения к localhost:9000. Я подтвердил, что переадресация портов работает, поскольку я могу получить доступ к localhost:9000 из Chrome на устройстве.

Однако когда приложение пытается отправить запрос к localhost:9000, я получаю ошибку 404 (не найдено). Я могу скопировать тот же адрес, к которому приложение пытается получить доступ, и он правильно открывается в Chrome на устройстве, а также через адресную строку инспектора веб-просмотра в Chrome devtools на моем компьютере разработчика.

Почему мое приложение не может подключиться к localhost, а Chrome может?

РЕДАКТИРОВАТЬ: Ближайшей похожей проблемой, которую я смог найти, была связь устройства Android с локальным сервером API Однако предложенное решение, добавление CSP, не решило мою проблему.

Некоторые вещи, которые я пробовал безрезультатно:

  • Добавлен CSP
  • Обновлен плагин белого списка
  • Добавлены <allow-intent href="*" /> и <allow-navigation href="*" />
  • Обновлена версия CLI
  • Подключение по IP вместо localhost

Я, наверное, что-то забыл, я уже давно над этим работаю и выключаюсь. Любые предложения приветствуются. Спасибо!

1
2BAD 13 Мар 2018 в 19:35

2 ответа

Лучший ответ

Мне удалось решить эту проблему, изменив привязки локального сервера, к которому я пытался подключиться с помощью клиента.

Мой сервер использует .NET и IIS Express для разработки, поэтому я изменил файл applicationhost.config из

<binding protocol="http" bindingInformation="*:9000:localhost" />

К

<binding protocol="http" bindingInformation=":9000:" />

Согласно Привязка IIS Express к IP-адресу. Это позволяет мне подключаться к серверу, используя 127.0.0.1:9000 или IP-адрес моей машины, а не только localhost:9000. Затем я изменил переадресацию портов в chrome://inspect на MYLOCALIP:9000 вместо localhost:9000 и настроил приложение для отправки запросов на 127.0.0.1:9000 вместо localhost:9000.

1
2BAD 15 Мар 2018 в 14:00

Попробуйте открыть соединение в конфигурации белого списка с помощью <access origin='*' allows-arbitrary-loads-for-media='true' allows-arbitrary-loads-in-web-content='true' allows-local-networking='true' /> в config.xml

0
Guillodacosta 13 Мар 2018 в 16:56