代码之家  ›  专栏  ›  技术社区  ›  2BAD

虽然端口转发正在工作,但应用程序无法向本地主机发出请求

  •  1
  • 2BAD  · 技术社区  · 8 年前

    我正在试着调试我的Android应用程序,它是用cordova通过USB构建的。

    我的设备显示在adb中,并且 chrome://inspect 我已将设备端口转发到要连接的端口 localhost:9000 。 我已确认端口转发正在工作,因为我可以访问 本地主机:9000 来自设备上的Chrome。

    但是,当应用程序尝试tp时,请向 本地主机:9000 ,我得到一个404(未找到)错误。 我可以复制应用程序尝试访问的同一地址,并且它可以在设备上的Chrome中正确打开,也可以通过我的开发机器上Chrome devtools中的webview检查器的地址栏。

    为什么我的应用程序无法连接到本地主机,而Chrome可以?

    编辑: 我能找到的最接近的类似问题是 Android device communicate with local API server 然而,添加CSP的解决方案并没有解决我的问题。

    有些事情我试过了,但没有成功:

    • 添加了CSP
    • 更新了白名单插件
    • 已添加 <allow-intent href="*" /> <allow-navigation href="*" />
    • 更新了CLI版本
    • 连接IP而不是 localhost

    我可能忘了什么,我已经断断续续地做了一段时间了。欢迎提出任何建议。谢谢

    2 回复  |  直到 8 年前
        1
  •  1
  •   2BAD    8 年前

    我通过更改试图与客户端连接的本地服务器的绑定来解决这个问题。

    我的服务器正在使用。NET和IIS Express进行开发,因此我修改了 applicationhost.config 文件来源

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

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

    根据 Binding IIS Express to an IP Address 。这允许我使用连接到服务器 127.0.0.1:9000 或者我的机器的IP而不是 localhost:9000 。 然后,我在中修改了我的端口转发 chrome://inspect MYLOCALIP:9000 而不是 本地主机:9000 并将应用程序配置为向 127.0.0.1:9000 而不是 本地主机:9000

        2
  •  0
  •   Guillodacosta    8 年前

    尝试使用打开白名单配置上的连接 <access origin='*' allows-arbitrary-loads-for-media='true' allows-arbitrary-loads-in-web-content='true' allows-local-networking='true' /> 在配置中。xml