无法在 BrowserStack Automate 上使用 iOS 设备在本地主机上加载站点

Cannot load site on localhost with iOS devices on BrowserStack Automate

我在本地主机上使用 Kestrel 在可用端口上托管 .NET Core HTTP 应用程序以进行一些基于浏览器的 UI 测试,但是当尝试使用真实 iOS 设备访问它时BrowserStack Automate BrowserStackLocal.exe,Safari 始终拒绝加载页面。

我已经尝试了 here 记录的 IP 范围的各个部分,但 none 已经成功。桌面浏览器(Chrome、Windows 上的 IE、Edge 和 Firefox,macOS Mojave 上的 Safari)和真实 Android 设备按预期工作。

我也尝试过使用机器的本地 IP 地址和完全限定的域名 (FQDN),如 here 所述,但两者都无法移植,因为 Windows 防火墙会阻止连接即使通过 BrowserStack Automate 也可以解析地址。

端口 80 不是一个可行的解决方案,因为开发人员的机器将在使用该端口的机器上安装 IIS 运行ning,因此它不能用于其他目的。

鉴于以下限制,可行的解决方案是什么?

  1. 托管在 HTTP 上。
  2. 在没有管理员权限的情况下运行(即不重新配置防火墙或使用特权端口号 <1024)。
  3. 至少要使用两个可能的端口号,以便在使用一个时至少有一个备用端口号可供尝试。
  4. 运行 测试不需要额外的手动设置(应该只是命令 dotnet test)。

您是否尝试将 'localhost' 更改为机器的 IP 地址(托管网站的地方)?

例如 - 如果托管 application/webpage 的机器的 IP 是 22.22.22.22,则在您的测试

中更改 http://localhost:3000/index.html to http://22.22.22.22:3000/index.html

他们在这里提到了同样的东西 - https://www.browserstack.com/question/663

在 iOS 设备上,尝试解析 http://bs-local.com:5000 instead of http://localhost:5000

您可以使用 http://bs-local.com:5000 访问该站点,但请确保在配置中使用 disableHostCheck: true 禁用主机检查 webpack

对于 angular cli 用户,要禁用主机检查,您需要使用 --disable-host-check,例如 ng serve --port 4200 --disable-host-check

如果您正在使用 Angular CLI 那么请 运行 命令

ng serve --host 0.0.0.0 --port xxxx 

这将确保您能够使用指定的 IP 和端口访问应用程序。完成后,您应该能够使用浏览器堆栈 iPhone 设备浏览器使用 IP 和端口而不是本地主机访问您的应用程序。

这来自 BrowserStack 的支持:

a) 在 Safari 上

  • 以前,iOS 设备 运行 iOS 版本 10 不支持使用 URL 中的 'localhost/127.0.0.1' 访问本地网站及以上。

  • 但是,为了确保您的网站在 URL 中加载 'localhost',我们现在将这些 URL 修改为 http://bs-local.com设备。这有助于以预期的方式加载您的网站。这里提到的也是一样。

  • 在您分享的屏幕截图中,您也可以看到重定向到 bs-local.com。

  • 您的本地主机网站似乎配置为只能通过特定主机名访问,例如 'localhost'。因此,您遇到报告的错误。

  • 为了能够在 iOS 设备上通过 Safari 测试您的本地主机网站,我建议将您的本地主机网站配置为可通过本地计算机的私有 IP 地址访问。

  • 完成后,您可以通过 http:// 访问您的本地主机网站,这应该有效。

  • 我也鼓励您阅读本指南以了解如何实现上述目标:https://www.notion.so/Testing-localhost-on-iOS-devices-1ceb5e274cee46d7ac538b71304919b4

b) 在 Chrome

  • 由于 Safari 施加的限制,iOS 设备默认不支持在 Chrome 上测试本地主机网站。

  • 问题出现在域 'localhost' 的使用中。我们也在积极尝试为这种行为寻找替代方案。

  • 但是,与此同时,您也可以在 iOS 设备上通过 Chrome 浏览器通过上述私有 IP 地址访问本地主机网站。

  • 对配置进行必要的更改以允许通过私有 IP 地址访问本地主机网站后,您可以在 iOS 上通过 Chrome 测试本地主机网站] 还有。

如果您需要任何进一步的帮助,请随时与我们联系!

注意:私有IP地址与127.0.0.1不同。您可以使用这篇文章来识别您机器的私有IP地址。

此致, 雷汉 浏览器堆栈支持