Xamarin Forms WebView在Android中加载http和https混合内容
我有一个Xamarin Forms WebView。源是一个包含混合内容(链接到https和http资源)的网页。它可以在Xamarin Forms iOS中正常加载,但是在Android中不会加载,我怀疑问题出在混合内容上。
如何设置MixedContentMode?
如果您已经定义了WebView
in代码或XAML,则需要一点时间。
如果您在代码中定义了它,请确保通过变量名对其进行引用,例如:
var myWebView = new WebView();
myWebView
在这种情况下就是我要说的。
然后,在班级顶部使用:
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
然后,在初始化之后添加以下行WebView
:
myWebView.On<Android>().SetMixedContentMode(MixedContentHandling.AlwaysAllow);
在XAML中,将正确的名称空间添加到页面的根目录,如下所示:
<ContentPage xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core" ....>
然后,WebView
您可以在上添加另一个属性:<WebView ... android:WebView.MixedContentMode="AlwaysAllow" />
这些是所谓的特定于平台的。您可以直接从Xamarin.Forms共享代码设置特定于平台的属性,而不是为一个简单属性设置自定义渲染器。
在此处阅读更多信息:https : //docs.microsoft.com/zh-cn/xamarin/xamarin-forms/platform/platform-specifics/并在以下位置使用(实际上是这种情况):https : //docs.microsoft .com / zh-CN / xamarin / xamarin-forms / platform / platform-specifics / consuming / android#enabling-mixed-content-in-a-webview
关于您要在此处设置的实际内容的注释,在示例中,我只是将其设置为AlwaysAllow
,以确保您知道每个选项的作用并将其设置为最安全的选项。这是一个简短的解释,摘自Microsoft Docs:
AlwaysAllow
–表示WebView
将允许HTTPS源从HTTP源加载内容。NeverAllow
–表示WebView
将不允许HTTPS源从HTTP源加载内容。CompatibilityMode
–表示WebView
将尝试与最新的设备Web浏览器的方法兼容。HTTPS来源可能允许某些HTTP内容加载,而其他类型的内容将被阻止。阻止或允许的内容类型可能会随每个操作系统版本而变化。https://stackoverflow.com/questions/53224239/xamarin-forms-webview-loading-mixed-content-in-android