.NET Core 6 Blazor Hybrid应用中允许iframe加载HTTP链接的方法
Blazor Hybrid中iframe加载HTTP资源的混合内容问题解决方案
方案1:将目标资源切换为HTTPS服务(推荐)
这是符合浏览器安全规范的根本解决办法。把你要加载的http://10.0.0.150:80/配置为HTTPS服务:
- 给目标服务配置SSL证书(自签证书用于测试,正式环境用权威机构颁发的证书)
- 将服务端口改为443(HTTPS默认端口),最终使用
https://10.0.0.150/作为iframe的src。
方案2:将Blazor Hybrid应用改为HTTP启动
如果你的应用场景允许(比如内部测试环境),可以把自身的启动协议从HTTPS改成HTTP,避免混合内容冲突:
- 打开项目的
launchSettings.json文件 - 修改
applicationUrl为HTTP地址,比如:
"applicationUrl": "http://0.0.0.0/sungrow",
- 移除或注释掉HTTPS相关的配置项(如
sslPort)。
方案3:配置WebView允许混合内容(仅限测试/内部环境)
针对不同平台的WebView组件,修改配置允许加载HTTP资源:
Windows(WebView2)
在BlazorWebView的初始化逻辑中,设置CoreWebView2允许混合内容:
protected override async Task OnInitializedAsync() { await base.OnInitializedAsync(); if (BlazorWebView.WebView is WebView2 webView2) { await webView2.EnsureCoreWebView2Async(); webView2.CoreWebView2.Settings.IsMixedContentAllowed = true; } }
Android
在AndroidManifest.xml中添加明文流量允许,并配置WebView的混合内容模式:
- 在
<application>标签添加:
android:usesCleartextTraffic="true"
- 在WebView的初始化代码中设置:
var webSettings = webView.Settings; webSettings.MixedContentMode = Android.Webkit.MixedContentHandling.AlwaysAllow;
iOS
在Info.plist中添加App Transport Security例外:
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
注意:该配置会被苹果App Store审核拒绝,仅适用于内部测试或企业分发应用。
内容的提问来源于stack exchange,提问作者Hickori
相关产品推荐
相关产品推荐

