63

在我的 Mac 上运行 ruby​​ on rails 项目。我需要在我的安卓手机上测试它。有没有办法在我的安卓手机上查看我的 mac localhost?

4

13 回答 13

85

名称“localhost”只是对您自己计算机的回送。要在您的 Android 上访问它,您需要找到计算机的 IP 地址。

查找此信息的最通用方法(适用于 Mac 和 Linux)是进入终端并键入ifconfig. 查找“en0”或“en1”,然后在该条目下查找“inet”列表。它将类似于“192.168.1.100”。当您找到该地址时,这就是您想要放入浏览器地址栏中的内容。

(特别是在 Mac 上,您可以转到“系统偏好设置”中的“共享”窗格,它会在那里告诉您。)

于 2012-06-12T22:08:34.083 回答
17

这是让您的 localhost 可用于在其他设备上进行测试的快速操作:

1)识别您的Android的IP:选择您连接的Wi-Fi(与Mac上的相同),您将获得详细的IP)。例如:我们假设您的 Android IP 是:192.168.0.10

2)在你的 Mac 上打开一个 Shell 并编辑你的主机:

sudo nano /etc/hosts

3)编辑文件是这样的:

127.0.0.1 192.168.0.10

4)识别你的Mac IP:(正如@Chuck完美解释的那样)(在你的shell中):

ifconfig

5)打开您在手机上使用的最喜欢的网络浏览器,并直接连接到您的 Mac IP(如果需要,使用端口):

http://192.168.x.x:8000/

6)享受你的测试:)

请注意,您可以为 Wi-Fi 上连接的每个支持执行此操作。

于 2013-04-06T20:23:21.700 回答
16

Chunk 的回答是正确的,假设您的移动设备和您的计算机在同一个网络上。但是,如果您希望您的 localhost 服务器对更广泛的 Internet 可见(例如,用于通过 3G 进行测试、开发 webhook 或与远程同事/客户端协作),则需要更多本地地址(以 10.* 或 192.168.* 开头) ) 对更广泛的 Internet 不可见。

传统的解决方案是端口转发和动态 DNS,但最近出现了一些旨在简化此过程的服务(免责声明:我是其中之一,PageKite 的作者)。

这些服务为您提供公共 DNS 名称和软件,将您的“本地主机”与云端中继服务器(也称为反向代理)连接起来。例如,如果您使用的是 PageKite,您可以在终端中运行以下命令:

$ pagekite.py 80 你的名字.pagekite.me

...创建一个映射http://yourname.pagekite.me/到运行在http://localhost:80. 当程序运行时,您的 localhost 站点将对 Internet 的其余部分可见。为了再次使其私有化,您只需关闭 pagekite.py 连接器程序即可。

为了完整起见,以下是我知道的一些 localhost 隧道服务:

  • PageKite是免费软件 (Python),具有“按需付费”在线服务。您可以根据需要创建任意数量的长期子域,包括通配符 SSL 证书,并且前端中继在多个地理位置运行以提供冗余和响应能力。
  • Localtunnel是一个免费(由 Twilio 赞助)的 Ruby 解决方案,它为连接提供临时名称。请注意,名称会被回收,因此您可能会在连接处于活动状态时看到意外流量。
  • Showoff.io 和 Tunnlr.com 是类似于 Localtunnel 的专有付费服务,基于相同的基本技术(ssh 隧道)。

(很抱歉没有链接到最后两个,所以垃圾邮件保护阻止我对我的竞争对手公平。;-)

于 2012-06-13T09:39:33.717 回答
13

今天发现了这个很棒的免费工具 -非常容易设置并且工作起来就像一个魅力!还提供适用于 Mac OS、Linux 和 Windows 的版本。

https://ngrok.com/

(与它没有任何关联)

于 2016-04-11T17:55:27.383 回答
13

这对我来说可以通过本地网络使用 IP 访问 rails 服务器:

  • 防火墙必须关闭。
  • /etc/hosts 应该有这个条目:

    127.0.0.1 192.168.100.12
    

    其中 192.168.100.12 是可以在终端中通过 ifconfig 命令找到的 IP 地址。

  • 使用以下命令启动 rails 服务器:

    rails server -b 0.0.0.0 -p 8080
    

我能够通过http://192.168.100.12:8080/访问我的本地主机

于 2017-01-18T11:54:45.950 回答
10

此外,如果您想在 Android/iOS 设备上测试使用Angular开发的PWA 应用程序,您将需要使用:

ng serve --host 0.0.0.0启动服务器 CLI。

如果您收到“无效的主机标头”,请使用:

ng serve --host 0.0.0.0 --disableHostCheck true

于 2018-09-13T16:54:03.693 回答
3

在阅读了这个线程(并且建议有效!)之后,我整理了一个解决这个问题的指南。此链接指向该指南,其中包含每个步骤的屏幕截图和查看位置。或者文字粘贴在下面。感谢您的帮助!

首先,您的手机和笔记本电脑必须连接到同一个 WiFi 网络。如果您使用手机移动热点,它仍然可以工作。但是,请确保在继续之前将两个设备连接到同一网络。

接下来,收集您的手机 IP 地址。为此,我使用 Network Info II 应用程序。绝对有另一种方法可以做到这一点。但是,Network Info II 可以根据需要工作,并且是本教程的文档。

现在在您的计算机上打开终端(不要担心您在哪个目录中)并运行命令 sudo nano /etc/hosts/。输入系统密码后,您会在终端顶部附近看到一串数字,后面跟着单词 localhost。localhost 实际上只是您计算机自己的服务器地址的别名,因此当您在浏览器中访问 localhost 时,它只是将 http 请求路由到您的本地计算机。为了将您的手机绑定到此循环中,请在数字字符串和本地主机之间输入其 IP 地址。

要保存此内容,请在提示保存时点击 control + X,然后点击 Y。之后,回车键将带您回到标准命令行。

在终端中打开第二个选项卡并启动本地服务器。我只使用一个简单的 python 服务器对此进行了测试,它可以通过在终端运行 python -m SimpleHTTPServer 8000 来运行。但是,我假设你可以启动任何你喜欢的本地服务器,这就是你所需要的参考是端口号。如果您确实使用简单的 python 服务器,则该端口号为 8000。

在终端中运行 ifconfig。这将显示大量信息,您应该向下滚动大约一半。您正在寻找的是在 inet 之后和 en0: 或 en1: 键内的网络掩码之前跟随的一串数字。

完毕!在您的 Android 上,打开浏览器并访问 inet 号,后跟冒号 (:) 和端口号。

于 2016-04-13T17:23:38.397 回答
2

虽然一个答案已被接受,但这对我有用:

  1. 确保您的计算机和安卓设备都在同一个网络上。
  2. 获取您计算机的 IP 地址。ifconfig(如果在终端内使用 mac 类型并查找en0/en1 -> inet它应该类似于19*.16*.1.4。)
  3. 打开您的移动设置并转到网络-> 长按您的 wifi 网络-> 修改网络-> 向下滚动到高级选项-> 选择代理手册并在代理主机名中输入您的地址,即19*.16*.1.4在端口内输入您的端口。并保存它。

  4. 在谷歌浏览器中搜索what is my ip,并获取您的 IP,假设它是1**.1**.15*.2**

  5. 尝试 1**.1**.15*.2**:port/从您的移动设备访问。

就这么简单。

于 2017-03-25T04:19:46.497 回答
2

MacOS Catalina 10.15.4

  1. 转到设置 -> 安全和隐私

在此处输入图像描述

  1. 选择防火墙选项卡并使用您的笔记本电脑密码解锁设置:

在此处输入图像描述

  1. 选择防火墙选项...,然后在对话框中取消选中阻止所有传入连接的框,然后单击确定。

在此处输入图像描述

  1. 打开终端并输入 ifconfig。寻找en0。在该部分中找到位于inet附近的地址- 这是您的笔记本电脑在本地网络中的地址。
en0: flags0=<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 0
...
        inet 192.168.0.123 netmask 0xffffff00 broadcast 192.168.0.255
...

  1. 使用 IP 地址 + 端口(如果您使用 localhost:4200 进行开发),否则省略端口:
http://<IP address found in en0 -> inet>:<port if needed>
  1. 利润!
于 2020-04-23T16:16:34.857 回答
1

如果您使用 php 运行 localhost,则解决方案将替换localhost为 Macs IP

php -S 192.168.x.x:8080

代替

php -S localhost:8080

于 2020-11-18T13:06:07.647 回答
0

正如其他答案中提到的,url 必须由计算机的 IP 地址而不是 localhost 组成。如果这不起作用,在尝试其他任何操作之前,请检查在 Android 应用程序中进行 api 调用时是否正确提及了端口以及 IP 地址。也就是说,您应该对以下格式的 url 进行 api 调用:http://192.168.X.X:80/api/..

于 2018-10-22T21:25:16.137 回答
0

对于 MacO,打开系统偏好设置 > 网络。

您应该会看到消息“并且有 IP 地址:my-ip-address”

这将是您的 IP 地址,然后在浏览器中导航到 http://my-ip-address/port-number。切记不要在 http 中添加“s”。

于 2021-06-30T18:54:20.517 回答
0

要在 Android 上使用 localhost,您应该在连接时使用本地 IP 地址。首先检查您计算机的本地IP地址。然后跟着:

除了公认的答案之外,如果您需要通过本地 IP 地址使用 localhost,请按照以下步骤操作:

将您的本地 IP 地址添加到 httpd.conf (/etc/apache2/httpd.conf) 中,如下所示:

(根据您使用的服务器更改端口)

Listen 12.34.56.78:80

Listen:允许您将 Apache 绑定到特定的 IP 地址和/或端口,而不是默认值。

保存,关闭并重新启动 apache。

于 2021-10-31T06:18:22.533 回答