• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

凉梁凉糕

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

前端做混合开发时 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查看(供参考)

posted on 2020-05-14 15:38  凉梁凉糕  阅读(2459)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3