我可以使用Android模拟器访问我的笔记本电脑web服务器,我使用10.0.2.2:portno 工作得很好。

但当我连接真正的Android手机时,手机浏览器无法连接到我笔记本电脑上的同一个web服务器。手机和笔记本电脑通过USB线连接。如果我运行 adb devices命令,我可以看到我的手机。

我错过了什么?


当前回答

在创建应用程序时,使用移动设备调试或渲染是很有帮助的。可以使用带有端口号的IPv4地址通过手机访问系统localhost。需要注意的是,为了实现这一点,两台设备都应该连接到同一个wifi或网络,并且机器的网络应该是私有的。

其他回答

Mac OS X用户

我通过启用远程管理实现了这一点:

确保你的手机和笔记本电脑连接到同一个WiFi网络 在Mac上,进入系统首选项/共享 开启远程管理

你会看到一条类似这样的消息:

其他用户可以使用some.url.com地址管理您的计算机

在你的Android设备上,你现在应该能够访问some.url.com,它委托给Mac上的localhost。你也可以使用ifconfig来获得Mac的IP地址。


ngrok的可移植解决方案(任何带有Node.js的操作系统)

如果你不介意用临时域名公开你的项目,你可以使用ngrok。假设我有一个在localhost:9460上运行的应用程序,我可以简单地编写

npm install ngrok -g

ngrok http 9460

这将给我:

Session Status                online
Update                        update available (version 2.2.8, Ctrl-U to update)
Version                       2.2.3
Region                        United States (us)
Web Interface                 http://127.0.0.1:4040
Forwarding                    http://f7c23d14.ngrok.io -> localhost:9460
Forwarding                    https://f7c23d14.ngrok.io -> localhost:9460

Connections                   ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00

我现在可以通过https://f7c23d14.ngrok.io远程查看localhost。这是与客户分享设计工作或进展的好机会。


替代解决方案与nginx代理通过

如果你通过nginx proxy_pass运行类似这样的东西,它将需要更多的调整-这是一个hack方法,但它适用于我,我对改进它的建议是开放的:

启用远程管理(如上所述) 临时将服务器设置为监听81端口,而不是80端口 输入以下命令:

sudo nginx -s reload

访问http://youripaddress: 81

server {
  listen 80;
  listen 81;   # <-------- add this to expose the app on a unique port
  server_name  ~^(local|local\.m).example.com$;
  # ...
}

重新加载并访问http://youripaddress:81

试着转到这个文件: C: \ wamp \ bin \ apache \ Apache2.2.11 \ conf \ httpd . conf

#   onlineoffline tag - don't remove
    Order Deny,Allow
    Allow from all // change it Deny
    Allow from 127.0.0.1

并将10.0.2.2修改为您的IP地址。

最简单的方法(这对我来说完美无缺)是在0.0.0.0:<port_no>本地托管您的站点,并使用移动设备访问它,在浏览器中使用<local_ipv4_address>:<port_no>/<path>。

要知道您的本地ipv4地址,只需在cmd中键入ipconfig 任何连接到同一网络的设备都可以访问这个url。

首先,把你的手机和电脑连接到普通的wifi。

然后,以管理员身份运行打开命令提示符

给出ipconfig命令

哪个显示无线局域网ip

在电话中使用ip:服务器的端口访问

即使您的移动设备和电脑通过usb连接,此解决方案也可用:

此时需要使用端口转发功能。 在谷歌chrome inspect窗口(chrome://inspect)可以看到连接的设备。

点击端口fowading按钮,并设置一个随机端口,例如3000到您的笔记本电脑使用的端口,例如8080。

现在从设备上使用localhost:3000来访问笔记本电脑中的localhost:8080(or_whatever_ip:portno)。 您可以在移动浏览器中查看。在移动浏览器中尝试localhost:3000。 确保勾选“端口转发设置”窗口中的“启用端口转发”复选框