- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 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://
NSURLDataRequest
urlSchemeTask
通过此设置,您可以使用 myapp-remote://
作为初始加载的架构来获取您的 https 页面,保持 TLS 安全和验证,并且还可以使用 mycustomurl ://
引用您的 WKWebView
不会阻止。
我的实现是在 C# 中为 Xamarin 实现的,但如果需要,我可以提供它以清楚起见。
关于ios - WKWebView 自定义 URL 方案不适用于 https? (混合内容被屏蔽),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49826107/
我是一名优秀的程序员,十分优秀!