Приложение Windows Store xhr для localhost не работает

У меня есть приложение Win Store App, которое использует REST для связи с устройством pinpad, подключенным через USB. У него есть собственный проприетарный http-сервер / программное обеспечение, но оно кажется довольно простым.

В моей машине разработчика и на моей тестовой машине все работает как ожидалось. Однако на машине моего тестера это не так. Проблема в том, что xhr GET не работает. Это просто время ожидания и возвращает статус 0.

Простое получение с использованием браузера является успешным, как и сценарий, выполняемый в браузере (то есть ff, ch).

Я поменял местами xhr для httpClient, jquery.ajax и прямого вызова XMLhttpRequest - все они имеют одинаковый результат. Я попытался установить заголовок местоположения для CORS. Пробовал разные форматы для адреса (localhost, 127.0.0.1, 192... и т. Д.). Приложение с радостью получит внешний контент (например, google.com).

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

1 ответ

Решение

По умолчанию приложения Магазина Windows заблокированы от петлевых подключений к localhost. По умолчанию Visual Studio устанавливает исключение при отладке, и вы можете настроить его самостоятельно для тестирования или для приложений с боковой загрузкой с помощью инструмента checknetisolation. Если ваше приложение будет развернуто из магазина, оно не может полагаться на исключение обратной связи.

См. Использование петли по сети в загруженных приложениях Магазина Windows на MSDN:

Чтобы добавить приложение Магазина Windows в список приложений, которые освобождены от брандмауэра обратной связи, запустите checknetisolation loopbackexempt -a -n=< имя семейства пакетов> из командной строки с повышенными привилегиями. Имя семейства пакетов для приложения Магазина Windows доступно в Visual Studio через редактор Package.appxmanifest на вкладке упаковки.

Другие вопросы по тегам