在Mac上运行的Localhost ..我可以在我的Android手机上查看吗?

时间:2012-06-12 22:01:46

标签: android macos localhost

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

12 个答案:

答案 0 :(得分:68)

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

查找此信息的最常用方法(适用于Mac和Linux)是进入终端并键入ifconfig。查找“en0”或“en1”,并在该条目下查找“inet”列表。这将是“192.168.1.100”的行。当您找到该地址时,您希望将其放入浏览器的地址栏中。

(具体来说,在Mac上,您可以转到“系统偏好设置”中的“共享”面板,它会告诉您。)

答案 1 :(得分:15)

以下是让您的本地主机可用于其他设备上的测试的快速操作:

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上连接的每个支持执行此操作。

答案 2 :(得分:13)

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

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

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

$ pagekite.py 80 yourname.pagekite.me

...创建从http://yourname.pagekite.me/http://localhost:80上运行的Web服务器的映射。程序运行时,您的localhost站点将对Internet的其余部分可见。为了再次将其设为私有,您只需关闭pagekite.py连接器程序。

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

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

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

答案 3 :(得分:8)

这对我来说可以通过本地网络访问带有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/

访问我的本地主机

答案 4 :(得分:6)

今天发现了这个伟大的,免费的工具 - 真的易于设置和工作就像一个魅力!适用于Mac OS,Linux和Windows的版本也可用。

https://ngrok.com/

(以任何方式与之无关)

答案 5 :(得分:2)

阅读完这个帖子后(建议工作!)我整理了一个指南来解决这个问题。 This link to that guide that has screenshots for every step and where to look。或者文本粘贴在下面。谢谢你的帮助!

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

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

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

要保存此项,请在提示保存时按控制+ X然后按Y.之后,回车键将返回标准命令行。

在终端中打开第二个选项卡,然后启动本地服务器。我只使用一个简单的python服务器来测试它,它可以通过在终端python -m SimpleHTTPServer 8000中运行来运行。但是,我假设您可以启动任何您喜欢的本地服务器,因为您需要的只是引用是端口号。如果你使用简单的python服务器,那个端口号是8000。

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

完成!在Android上,打开浏览器并访问inet编号,然后输入冒号(:)和端口号。

答案 6 :(得分:2)

MacOS Catalina 10.15.4

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

enter image description here

  1. 选择防火墙标签,然后使用笔记本电脑密码解锁设置:

enter image description here

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

enter image description here

  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. 利润!

答案 7 :(得分:1)

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

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

  4. 在Google Chrome浏览器中搜索what is my ip并获取您的IP,让我们说它是1**.1**.15*.2**

  5. 尝试从您的移动设备访问1**.1**.15*.2**:port/
  6. 就这么简单。

答案 8 :(得分:1)

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

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

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

ng serve --host 0.0.0.0 --disableHostCheck true

答案 9 :(得分:1)

如果您使用php运行本地主机,则解决方案是将 cy.get('div.main-content') .then(($sectionBody) => { // @ts-ignore cy.waitUntil(() => { return ($sectionBody.find('div[data-cy="sales_listing_section"]').length > 0) }, { errorMsg: `ERROR: Sales section has not loaded.`, timeout: 10000, // waits up to 10000 ms, default to 5000 interval: 500, // performs the check every 500 ms, default to 200 verbose: true, customCheckMessage: `CHECK: If Sales section has loaded` }) .then(() => { cy.log('Sales section', 'Loading finished'); }) }) 替换为Macs IP

localhost

代替

php -S 192.168.x.x:8080

答案 10 :(得分:0)

如其他答案所述,URL必须由计算机的IP地址而不是本地主机组成。如果这不起作用,请尝试其他操作,然后在Android应用中进行api调用时检查端口是否正确提及IP地址。也就是说,您应该对以下格式的网址进行api调用:http://192.168.X.X:80/api/..

答案 11 :(得分:0)

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

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

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