gpt4 book ai didi

ios - WKWebView 自定义 URL 方案不适用于 https? (混合内容被屏蔽)

转载 作者:可可西里 更新时间:2023-11-01 01:57:52 25 4
gpt4 key购买 nike

我有一个 WKWebView 来加载一个网站,该网站具有使用 WKURLScheme 实现的自定义 url 方案 (mycustomurl://),网站将使用 GET 调用该方案。 当网站位于 http://时一切正常,但当我切换到 https://时出现以下错误并中断:

[blocked] The page at https:// (url snipped) was not allowed to display insecure content from mycustomurl://(url snipped). 

WKURLScheme 回调从未被触发,所以我怀疑 Safari 或更强大的功能阻止了它:/

我已经梳理了关于 ATS 的 SO 讨论,但没有一个有效。我确实看到一些像 this one 这样的讨论提到这是因为 Safari 阻止了混合内容,当我直接在 Safari 上尝试它时它确实产生了相同的结果(被阻止)。

这个好像没有解决办法?看来我们无法关闭 Safari 的混合内容限制。那么应该如何使用和实现自定义 URL 方案,因为 https 应该总是比 http 更好的选择?

我确实注意到大多数自定义 URL 方案教程都使用 http 而不是 https...

最佳答案

不确定这个答案是否仍然相关,但实际可行的解决方案是使用自定义 WKUrlSchemeHandler 从中加载初始 https 页面。

我最近遇到了类似的问题(尝试从 https 页面连接到设备上的 WebSocket 服务器),我发现在保持应用程序受 https 保护的同时使它正常工作的唯一方法是以下不那么-很好的解决方法:

  • mycustomurl:// 注册您的自定义 WKUrlSchemeHandler
  • 注册一个第二个自定义WKUrlSchemeHandler,比方说myapp-remote://
  • webView:startURLSchemeTask: 中:
    • urlSchemeTask.Request 中检索请求 url>
    • myapp-remote:// 替换为 https://
    • 使用 https-url 创建一个 NSURLDataRequest
    • 将响应和获取的数据返回给 urlSchemeTask

通过此设置,您可以使用 myapp-remote:// 作为初始加载的架构来获取您的 https 页面,保持 TLS 安全和验证,并且还可以使用 mycustomurl :// 引用您的 WKWebView 不会阻止。

我的实现是在 C# 中为 Xamarin 实现的,但如果需要,我可以提供它以清楚起见。

关于ios - WKWebView 自定义 URL 方案不适用于 https? (混合内容被屏蔽),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49826107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com