Android WebView 阻止从 https 重定向到 http

标签 android webview https

我有一个解决方案,我的 Android WebView 需要首先打开一个 https url,然后它将被重定向到一个 http url(它可能正在尝试从 https 站点发送一个 http POST)。这不起作用,我的 Android 调试日志显示:

02-20 11:04:45.079 8538-8538/? E/WebViewCallback﹕ Blocked URL: [blocked] The page at 'https://xxx/' was loaded over HTTPS, but is submitting data to an insecure location at 'http://yyy': this content should also be submitted over HTTPS.

WebView 中是否有任何允许这种行为的配置选项?

更多信息:这似乎是 Android SDK 中的行为更改。很久以前编译的客户端没有任何提示。

最佳答案

Lollipop (API 20) 中混合 http/https 内容的默认 WebView 设置发生了变化。参见 https://datatheorem.github.io/android/2014/12/20/webviews-andorid-lollipop/了解更多详情。

要允许 https 重定向到 http,您需要将混合内容模式设置为 MIXED_CONTENT_ALWAYS_ALLOW

 if (Build.VERSION.SDK_INT >= 21) {
        webview.getSettings().setMixedContentMode( WebSettings.MIXED_CONTENT_ALWAYS_ALLOW );
    }

请注意,从安全角度来看,设置 MIXED_CONTENT_ALWAYS_ALLOW 是不好的,正如您在回答中指出的那样,最好在两个站点上都支持 https。

但对于那些无法控制网站的人来说,这应该可行。

关于Android WebView 阻止从 https 重定向到 http,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28626433/

相关文章:

android - onPause - 尝试调用虚拟方法 WebView

android - 使 html 页面文本适合窗口宽度

r - 通过 HTTPS 将 R 管道工用于 Web API

静态最终的Android内存泄漏

android自定义软键盘拦截ime_action

java - Gradle 同步失败 : All firebase libraries must be either above or below 14. 0.0

android - 如何以编程方式更改 WebView 比例?

rest - 从安装在计算机中的 Android 应用程序中抓取 HTTPS REST API

php - 如何强制 https 用于 prod 但 http 用于开发环境?

android - 如何增加 Google map 中当前位置周围的默认圆圈的大小?