Я пытаюсь отладить свое приложение для 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
Я, наверное, что-то забыл, я уже давно над этим работаю и выключаюсь. Любые предложения приветствуются. Спасибо!
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
.
Попробуйте открыть соединение в конфигурации белого списка с помощью <access origin='*' allows-arbitrary-loads-for-media='true' allows-arbitrary-loads-in-web-content='true' allows-local-networking='true' />
в config.xml
Похожие вопросы
Связанные вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.