解决HTTPS混合HTTP的问题

HTTPS页面混合不安全的HTTP请求


在启用HTTPS页面时,如果出现HTTP请求,那么浏览器会报错,如下:

1
Mixed Content: The page at ‘https://www.taobao.com/‘ was loaded over HTTPS, but requested an insecure image ‘http://g.alicdn.com/s.gif’. This content should also be served over HTTPS.

既浏览器会Block掉不安全的HTTP请求,所以解决方法有三种:

  1. 最简单的,将HTTP替换为HTTPS
  2. 去掉URL中的http://https://,将其替换为//,这样,浏览器就可以根据当前页面的请求方式来动态切换了。
  3. 如果涉及到第三方的资源,无法直接修改源代码,如腾讯公益404的JavaScript代码如下,document.write函数写入两个JavaScript文件,而这两个文件中包含了HTTP的请求。这个时候,我们可以在<head>中添加<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">,浏览器会在加载HTTP资源时自动替换成HTTPS请求。
1
2
3
var _base = '//qzone.qq.com/gy/404/';
document.write('<scri' + 'pt type="text/javascript" src="' + _base + 'data.js" charset="utf-8"></sc' + 'ript>');
document.write('<scri' + 'pt type="text/javascript" src="' + _base + 'page.js" charset="utf-8"></sc' + 'ript>');