c# - 无法从 http 访问 127.0.0.1。我必须使用 android 设备不支持的 localhost
问题描述
我不确定这是否是一个错误。如果这是我已经使用 github 的错误: https ://github.com/microsoftgraph/microsoft-graph-docs/issues/3106
如果不是我需要帮助。我在 Unity3d 中为我的游戏使用 microsoft-graph 将保存文件存储在一个驱动器用户帐户上。我可以在哪里使用 localhost 一切正常,但在 android 设备上我必须使用 127.0.0.1 作为 localhost。对于 dropbox 和 google,我能够做到...但是 microsoft-graph 不适用于 ip localhost 上的 http,例如 127.0.0.1 它仅适用于 localhost 的 http,并且它需要 https 用于 127.0.0.1...当然是 HttpListener在 c# 中 for loopback 仅适用于 http (因为这是一个游戏,我需要用户在没有奇怪配置的情况下在 android 上使用它)。我认为这是一个错误,因为 boot Dropbox 和 google 让您能够将 http 用于 127.0.0.1 ......但如果它' s 不是 bug 你将如何解决这个问题?甚至可以在没有任何奇怪配置的情况下通过 HttpListener 或类似的方式在环回中使用 https?您应该知道,如果我在登录后手动将重定向 url 更改为 http,我就能使其工作。唯一的问题是我不想设置服务器来多次重定向用户。我希望我的游戏在 localhost 中查找重定向 url 响应(在 android 上应该是 127.0.0.1)。
我需要知道是否可以将 https 与 HttpListener(或类似的东西)一起用于 127.0.0.1,或者您知道如何在没有任何 web 应用程序的情况下解决此问题。
var httpListener = new HttpListener();
httpListener.Prefixes.Add("http://127.0.0.1:" + anyfreeportonyourpc + "/");
httpListener.Start();
解决方案
我不确定这是您所说的错误还是功能,但我有一些想法可以尝试。
可能最简单的解决方法是使用http://readme.localtest.me/ - 这样您就可以使用http://localtest.me:80
指向 127.0.0.1 的公共 DNS 记录 - 它非常适合测试目的,但在这种情况下相当聪明的工作。
但是正如您所提到的,它需要加密,因此根据上述想法,您可以在您自己的域之一上执行此操作。像免费的Lets Encrypt一样为其获取证书,然后将其指向 127.0.0.1 并在您的设备上使用它。
假设您有一个名为a.pl
go 的域并创建一个子域local.a.pl
并将该子域上的 A 记录设置为127.0.0.1
(这通常是带有 Web 应用程序的服务器,但在这种情况下我们想用它来解决问题)使用让我们加密把证书放在那里,这样你就可以使用 HTTPS 或者自签名也可以,我不知道。
然后在您的代码中执行此操作
httpListener.Prefixes.Add("https://local.a.pl:" + anyfreeportonyourpc + "/");
是的,您的应用程序最初需要互联网连接才能找到 DNS 记录,并将其缓存在移动设备上。将 TTL 设置为最大值将有助于在没有互联网时保持缓存。因此,一旦它被解决,您就可以将该域用于与您需要的本地设备的每个连接。它只需要 2 秒的互联网来缓存 DNS 条目。
以某种方式添加主机查找的另一种方法......不知道如何,但一个简单的本地 A 记录到 myapp.local
该点回到主机文件中的 127。这只是出于解决方法的目的而进行的私人级别查找,但由于过去的过度滥用,该记录在手机上可能并不直接。
听起来图形服务器绑定仅设置为localhost
...的主机名,请检查您是否可以更改它或将其放宽为 IP 地址。这将解决您问题的根本原因。我知道这些东西有时有愚蠢的绑定。
推荐阅读
- xml - XSLT 1.0:具有以下兄弟条件的环绕标记
- ionic-framework - 可以用 Ionic 构建 Telegram 客户端吗?
- laravel - 在哪里放置我曾经使用过的额外 Laravel 路线,但我想保留它们仅供参考
- unity3d - 游戏开始时分数不是从0开始的
- r - 如何沿同一数据框中的列分配 R 中数据框的行和
- android - 导航表单选项菜单项时导航到嵌套图时如何返回用户离开的位置?
- r - r plotly中的白色标签垫
- ios - iOS 13 状态栏样式
- c - 在c中通过串口传输时字符\r转换为\n
- spring-boot - 将大量文件加载到 SFTP 问题