无法使用BrowserStack Automate上的iOS设备在localhost上加载站点

时间:2018-10-28 17:26:10

标签: ios .net-core browserstack

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

我已经尝试了here记录的IP范围的各个部分,但是都没有成功。桌面浏览器(Windows上的Chrome,IE,Edge和Firefox,macOS Mojave上的Safari)和真实的Android设备可以正常工作。

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

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

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

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

5 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

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

对于有角度的cli用户,要禁用主机检查,您需要使用--disable-host-check之类的ng serve --port 4200 --disable-host-check

答案 2 :(得分:1)

这来自BrowserStack的支持:

a)在Safari上

  • 以前,运行iOS 10及更高版本的iOS设备不支持使用URL中带有“ localhost / 127.0.0.1”的本地网站。

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

  • 在您共享的屏幕快照中,您还可以看到重定向到bs-local.com。

  • 似乎您的本地主机网站配置为只能通过特定的主机名(例如“本地主机”)访问。因此,您将面临所报告的错误。

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

  • 完成后,您可以使用http:// 访问本地主机网站,这应该可以工作。

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

b)在Chrome上

  • 由于Safari的限制,iOS设备默认不支持在Chrome上测试localhost网站。

  • 使用域“ localhost”会出现问题。我们也正在积极尝试寻找这种行为的替代方法。

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

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

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

注意:专用IP地址与127.0.0.1不同。您可以使用本文来标识计算机的专用IP地址。

关于, 里汉 BrowserStack支持

答案 3 :(得分:0)

您是否尝试使用计算机(托管Web的IP)的IP地址更改“ localhost”?

例如-如果托管应用程序/网页的计算机的IP是22.22.22.22,则在测试中将http://localhost:3000/index.html更改为http://22.22.22.22:3000/index.html

他们在这里提到了相同的内容-https://www.browserstack.com/question/663

答案 4 :(得分:0)

如果您使用的是Angular CLI,请运行命令

ng serve --host 0.0.0.0 --port xxxx 

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