处理:This request has been blocked; the content must be served over HTTPS.

8 篇文章 0 订阅
2 篇文章 0 订阅
https://segmentfault.com/a/1190000021534343
处理:This request has been blocked; the content must be served over HTTPS.
方案一:
具体的解决方法(!!!亲测有效!!!)主要是:
 <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
可以在相应的页面的<head>里加上这句代码,意思是自动将http的不安全请求升级为https。
使用这个设置会自动将http升级为https

方案二:
Android这里的webview设置允许http和https混合模式,并不能解决问题

android的无效设置,可以了解下。设置了,我并没有解决问题。

https://blog.csdn.net/adojayfan/article/details/88880269

场景

在Android中使用WebView加载一些网页时,明明调用了WebView.loadUrl(“xxxxxx”),但是WebView却显示一片空白。

下面是我用WebView加载百度首页(https://www.baidu.com)出现的提示。我用小米手机自带的浏览器加载会弹出证书有问题的提示,但是WebView啥也没提示,只有一片空白。

2019-03-28 12:06:51.973 22181-22181/com.example.app I/chromium: [INFO:CONSOLE(0)] “Mixed Content: The page at ‘https://www.baidu.com/’ was loaded over HTTPS, but requested an insecure image ‘http://d.hiphotos.baidu.com/forum/pic/item/9.jpg’. This request has been blocked; the content must be served over HTTPS.”, source: https://www.baidu.com/ (0)

这个原因是浏览器不允许在https里面嵌套http请求,只要发现https网站中有http请求,直接忽略。

解决方案

最简单的不用https,用http的方式加载网页。但是为了安全肯定不会改成http,所以还是需要设置WebView,
通过以下设置以后,就可以正常加载网页了。

webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
  • 1

如果是Android 8.0以上,还需要在AndroidManifest.xml中加上以下属性。因为8.0以上默认禁用了http.

<application
    ....
    android:usesCleartextTraffic="true"
    ...>
  • 原理

英文官网
https://developer.android.com/reference/android/webkit/WebSettings.html#setMixedContentMode(int)

国内官网
https://developer.android.google.cn/reference/android/webkit/WebSettings.html#setMixedContentMode(int)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值