首页 > 解决方案 > 无法使用端口转发在 Android 手机上调试 webapp

问题描述

我有一个从我的桌面提供服务工作者的网络应用程序,我想在 Android 手机 (Pixel3) 上进行调试。
在桌面上,我使用 localhost 满足开发目的的安全连接 (https) 要求,并且页面显示为安全挂锁,并且服务人员正常工作 - 好!

在电话上,我可以浏览到桌面 IP 地址 (192.168.1.74),并且 Web 应用程序加载并快速响应(尽管没有安全挂锁,正如预期的那样)。
但是在电话上,我无法让安全挂锁出现。
我尝试了我在此处描述的不同方法,包括 localhost,但之前在我的网络服务器中,我将 http://localhost 重定向到 https://localhost,根据此处的评论之一,这并不好。

所以现在,我删除了对 https 的重定向,一起禁用了 https 并且只使用 http://localhost

我按照这里的描述设置了端口转发。(在我的情况下8081 -> localhost:80:)

我可以通过 USB 电缆连接手机来调试 Web 应用程序,在 chrome://inspect/#devices 中为所需选项卡、Pixel 3 XL 设备选择检查,然后在手机上与 Chrome 上的页面交互并查看桌面上的更改。

当我在手机上的 Chrome 中打开选项卡并输入 localhost:8081 时,页面加载速度非常慢。大多数时候它会因ERR_CONNECTION_REFUSED而失败,有时它会在很长一段时间后加载。
我将手机和桌面上的所有 Chrome 设置恢复为默认设置(例如禁用标志chrome://flags/#allow-insecure-localhostchrome://flags/#insecure origins treated as secure

但我仍然无法让端口转发工作。


我收集了最终加载的页面的信息。

使用 Chrome 稳定版运行时,在“网络”选项卡中,加载登录页面的时间约为 2 分钟。悬停在 (Initiator) 列附近,我看到了chrome-error://chromewebdata/:1700(见图)

快照

所以这可能是网络问题?

谢谢,
阿夫纳

桌面:Ubuntu 18.04,Chrome 版本 83.0.4103.61
Pixel 3 XL:Chrome:83.0.4103.106,Android 版本 10

标签: androidservice-worker

解决方案


我无法使用端口转发。虽然它正在工作,但网络速度非常慢,使得这个选项无法使用。

我终于通过做以下事情解决了这个问题:

  • 在 Web 服务器 (nginx) 配置文件中:

    • 配置了一个不同于默认 80 的任意端口 (8079)

      猫 nginx.conf 服务器 {
      听 8079;
      听 [::]:8079;
      ...

    • 禁用 https 配置

    • 禁用从 http 到 https 的重定向

  • 在桌面上的 Chrome 中chrome://flags/
    配置参数:Insecure origins treated as secure使用:http: //192.168.1.74 :8079
    启用并重新启动 Chrome

  • 在 Android 上的 Chrome 中
    设置与桌面上的 Chrome 类似的设置并重新启动

之后,我可以从我的 Android 手机调试 Web 应用程序,并注册、安装和使用 service worker。


推荐阅读