神奇"HTTPS重定向网页"在哪里?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了神奇"HTTPS重定向网页"在哪里?相关的知识,希望对你有一定的参考价值。

参考技术A

本文的合集已经编著成书, 高级Android开发强化实战 ,欢迎各位读友的建议和指导。在京东即可购买: https://item.jd.com/12385680.html

我还没有看过J. K. 罗琳的"神奇动物在哪里", 但是遇到过"神奇HTTPS重定向网页在哪里", 这是一个关于 WebView 的故事. 在android项目中, 为了更好地显示HTML网页, 必然需要重写WebView, 在其中添加一些默认属性. 当遇到HTTPS重定向网页时, 我们需要格外注意, 否则WebView会无法显示.

重定向 : 分为两种: 301, 302.

网站安全证书 : 在客户端浏览器和Web服务器之间建立一条SSL安全通道, 保证双方传递信息的安全性,并且支持用户通过服务器证书验证所访问的网站的真实性.

遇到的情况是这样的. 已被定制的 WebView , 加载在线问诊页面的 HTTP 短链

无法重定向, 显示空白, 即未调用 WebView 的 shouldOverrideUrlLoading 方法. 这个链接在浏览器可正常显示, HTTP重定向(301)至 HTTPS

同时, WebView 支持正常加载其他HTTP页面, 如

WebView 也支持正常加载其他HTTP重定向HTTPS页面, 如Amazon的HTTP链接

HTTP链接重定向至HTTPS链接

Why! 有的同学已经在我的帮助下发现问题的所在! Chrome浏览器给予正确提示. 这两个重定向的HTTPS链接, 一个是安全链接, 一个是不安全链接.

那什么是安全链接呢? 因为HTTPS使用SSL进行加密, 与不加密的网络连接相比, 使用SSL技术可以提高数据的隐私性和安全性, 并降低被第三方拦截或滥用信息的风险. 网站访问者在得知使用SSL连接时, 更愿意提供付款信息以及其他个人信息. 与 支付 相关的网页, 多数都会使用SSL.

然而, 不是所有网站HTTPS链接都在Google备案, 浏览器无法认证未备案的链接, 显示" 不安全 "标记, 而这些"不安全"的链接, 在Android的WebView中, 默认无法访问, 显示空白页面.

在Web中添加如下

结论 :
在使用通过SSL加密的HTTPS链接时, 如果这个链接的安全证书无法得到认证, 则WebView无法显示网页, 默认空白. 注意HTTP链接会重定向至HTTPS链接, 导致相同情况发生. 重写 WebViewClient 的 onReceivedSslError 方法, 信任全部证书, WebView才可正常显示. Do you get it?

OK, That\'s all! Enjoy it!

以上是关于神奇"HTTPS重定向网页"在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

“此网页有一个重定向循环”(使用 GeoIP 重定向网站)

Nginx 从“www”重定向到“non www”以及从“http”到“https”?

带有“此网页有重定向循环”的 Liferay 门户

js 怎么URL 重定向,和获取重定向之后的地址以及参数

如何用 PHP 实现 302 重定向到其他 URL

https 重定向有时只有效