webview 打开h5页面 新标签页_前端做混合开发时 webview中打开h5页面图片不显示解决方法和原理...

在做混合开发过程中,webview打开h5页面时,若h5页面是https访问的,而内部图片资源是http内容 就会存在图片不显示的问题 ;

问题分析:在https页面请求http内容属于安全策略的一种,请求了混合资源;

自测时,在浏览器中显示正常,实际上在控制台中已经打印警告用户了(如下),

Mixed Content: The page at ‘https://****‘ was loaded over HTTPS, but requested an insecure image ‘http://***.png‘. This content should also be served over HTTPS.

在Security内部 也显示了Non-secure origins 的内容,但是资源可以正常显示。而在webview中直接就不加载该不安全资源,若想继续加载该资源需要webview进行设置,去打开该Mixed Content

解决方案:1在android端去设置;

mWebview.getSettings().setJavaScriptEnabled(true);//启用js

mWebview.getSettings().setBlockNetworkImage(false);//解决图片不显示

// 解决混合资源的加载

if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP)

settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLAW);

备注:接口跨域针对的是xhr请求 (包含对他封装的一些方法,axios ajax 等)

静态资源内容不存在跨域问题,应该说是一种安全策略,https的被认为是安全的内容,http的默认non-secure

静态资源和接口的区分 可以通过content-type查看(供参考)

原文:https://www.cnblogs.com/xhliang/p/12889095.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值