【问题标题】:Cannot load site on localhost with iOS devices on BrowserStack Automate无法使用 BrowserStack Automate 上的 iOS 设备在 localhost 上加载站点
【发布时间】:2018-10-28 17:26:09
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: ios .net-core browserstack


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        这是来自 BrowserStack 的支持:

        a) 在 Safari 上

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

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

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

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

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

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

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

        b) 在 Chrome 上

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

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

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

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

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

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

        问候, 里汉 BrowserStack 支持

        【讨论】:

          【解决方案4】:

          您是否尝试将“localhost”更改为机器的 IP 地址(托管 Web 的地方)?

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

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

          【讨论】:

          • 我做到了,不幸的是 FQDN 和 IP 地址都属于问题中所述的 Windows 防火墙。
          • 在 iOS 设备上,尝试解析 bs-local.com:5000 而不是 localhost:5000
          • @MukeshTiwari 谢谢 - 修复了它!如果您将其写为答案,我会将其标记为解决方案。也许这可以作为我发布链接的问题的第三个故障排除建议添加到文档中?
          【解决方案5】:

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

          ng serve --host 0.0.0.0 --port xxxx 
          

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-10-21
            • 2016-02-16
            • 1970-01-01
            • 2015-09-29
            • 1970-01-01
            相关资源
            最近更新 更多