127.0.0.1 не доступен с http.Я должен использовать localhost, который не поддерживается на устройстве Android - PullRequest
0 голосов
/ 18 сентября 2018

Я не уверен, если это ошибка или нет.Если это ошибка, я уже использовал github: https://github.com/microsoftgraph/microsoft-graph-docs/issues/3106

, если нет, мне нужна помощь.Я использую microsoft-graph для своей игры в Unity3d, чтобы сохранить файл сохранения на одной учетной записи пользователя диска.Где я могу использовать localhost все работает, но на устройстве Android я должен использовать 127.0.0.1 как localhost.Для dropbox и google я смог это сделать ... но microsoft-graph не работает с http на ip localhost вроде 127.0.0.1, он работает только на http для localhost и требует https для 127.0.0.1 ... Конечно HttpListenerв c # for loopback работает только для http (и так как это игра, мне нужно, чтобы пользователь использовал ее на Android без странных конфигураций).Я думаю, что это ошибка, потому что boot dropbox и google дают вам возможность использовать http для 127.0.0.1 ... но если это не ошибка, как бы вы решили эту проблему?Можно даже использовать https в петле с HttpListener или что-то в этом роде без каких-либо странных настроек?Вы должны знать, что если я вручную изменю URL перенаправления на http после входа в систему, я смогу заставить его работать.Единственная проблема заключается в том, что я не хочу настраивать сервер для многократного перенаправления пользователя. Я хочу, чтобы моя игра искала ответ URL перенаправления на локальном хосте (для Android это должно быть 127.0.0.1).

Мне нужно знать, возможно ли использовать https с HttpListener (или что-то в этом роде) для 127.0.0.1, или вы знаете, как обойти эту проблему без каких-либо веб-приложений.

var httpListener = new HttpListener();
httpListener.Prefixes.Add("http://127.0.0.1:" + anyfreeportonyourpc + "/");
httpListener.Start();

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

это ошибка.Нет никакого способа решить эту проблему, если Microsoft не обновляет свой код.

РЕДАКТИРОВАТЬ.Наконец, простое решение:

- just make a simple blog with wordpress
- activate https
- publish your blog in a free site like altervista
- install Insert Headers and Footers
- use this simple code

<script>
if(window.location.href.startsWith("https://yourblogaddress.altervista.org/blog/yourpostpath/")){
var stringPartUrl = window.location.href.substring(numberofcharinyoururl);
window.location.replace("http://localhostor127.0.0.1:yourport/" + stringPartUrl);
}
</script>

, после чего вам просто нужно установить https://yourblogaddress.altervista.org/blog/yourpostpath/ в новом приложении портала Azure и изменить OpenURL и redirect_uri в вашем приложении (но не URL-адреса префиксов. Добавить, который должен бытьваш 127 о местных хостах).Каждый раз, когда кто-то входит в систему, он должен войти в свою учетную запись Microsoft, которая должна перенаправить на ваш адрес блога https, который должен перенаправить на localhost или 127, и получить переменную кода для вашего приложения, которая, наконец, сможет получить код авторизации для загрузки / скачивания файлов..

Основная проблема в том, что ваш блог должен быть в сети, и вы можете поддерживать только один порт (так как вам нужно перенаправить один раз).Лучше всего то, что вам не нужно менять реализацию на настольном компьютере (так как они снова позволяют localhost с обычным http на новом портале) и что вам не нужен платный домен, чтобы что-то делать.

0 голосов
/ 18 сентября 2018

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

Возможно, самый простой способ обойти это - использовать http://readme.localtest.me/- Таким образом, вы можете использовать http://localtest.me:80, которая является общедоступной DNS-записью, указывающей на 127.0.0.1. - Это хорошо для тестирования, но в этом случае довольно умный обходной путь.

Но, как вы упомянули, нужнобыть зашифрованным, так что, исходя из идеи выше, вы можете сделать это на одном из ваших собственных доменов.Получите для него сертификат, например, бесплатный Позволяет зашифровать , просто укажите его на 127.0.0.1 и используйте его на своих устройствах.

Допустим, у вас есть домен с именем a.pl, перейдите и создайте поддомен local.a.pl и установите для записи A в этом поддомене значение 127.0.0.1 (Обычно это сервер с веб-приложением, но вв этом случае мы хотим использовать его для обхода) Использование позволяет шифровать, чтобы поместить туда сертификат, чтобы вы могли использовать HTTPS, или, возможно, самоподписанный тоже подойдет, я не знаю.

Тогда в вашем кодевы делаете это

httpListener.Prefixes.Add("https://local.a.pl:" + anyfreeportonyourpc + "/");

Да, вам сначала потребуется подключение к Интернету, чтобы приложение могло найти запись DNS и кэшировать ее на мобильном устройстве.Установка максимального значения TTL поможет сохранить его в кеше, когда нет интернета.Поэтому после его разрешения вы можете использовать этот домен для каждого отдельного подключения к локальному устройству, которое вам нужно.Для кеширования записи DNS требуется всего 2 секунды интернета.

Другой способ как-то добавить поиск хостов ... Не знаю, как, но простая локальная запись A для myapp.local, указывающая на 127 в файле hosts.Это будет только поиск на частном уровне для ваших обходных целей, но добавление этой записи на мобильных устройствах может быть непростым делом из-за чрезмерного злоупотребления в прошлом.

Это также звучит так, будто привязка графического сервера установлена ​​только наимя хоста localhost ... проверьте, можете ли вы изменить это или изменить его на IP-адрес.Это решит основную причину вашей проблемы.Я знаю, что эти вещи иногда имеют глупые привязки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...