概述
HTTP和HTTPS是两种不同的协议。HTTP使用80端口,而HTTPS使用443端口。HTTP是明文传输,而HTTPS为了保障数据传输的安全性,通过SSL证书实现加密传输。
分析
问题1:HTTP和HTTPS可以互相访问吗?
可以互相访问,但存在安全问题。虽然HTTPS是一种加密协议,可以保护数据在传输过程中的安全性,但从HTTP站点发出的数据,未到达HTTPS站点之前就已经暴露在了网络上,容易被黑客截获和篡改。
问题2:HTTP和HTTPS嵌套访问,请求被浏览器拦截,怎么解决?
如果浏览器认为这是不安全的请求,将会进行拦截,并提示用户。这是因为HTTPS是一种加密的安全协议,而HTTP是一种明文协议,存在安全风险。为了保护用户的安全,浏览器会拦截这种请求。可以尝试使用HTTPS接口,或在浏览器中设置允许访问不安全内容。
备注1:如果被请求方不允许跨域,浏览器也会进行拦截。
备注2:HTTP怎么转换成HTTPS?可以通过启用SSL证书变成HTTPS站点,或通过nginx的反向代理,将HTTP地址转换成HTTPS地址。
问题3:站点能同时支持HTTP和HTTPS协议吗?
可以,有些网站可以同时支持两种协议,这样用户可以根据自己的需求选择使用哪种协议进行访问。不过,为了保障用户的安全,建议尽量使用HTTPS协议。
问题4:HTTPS站点能正常嵌套多级HTTP页面吗?
不可以。例如HTTPS站点通过iframe嵌入了HTTP地址的页面(A页面),如果A页面中还嵌套了一级其他的HTTP子页面(B页面),则访问HTTPS地址的主页面时,B页面加载失败(此时浏览器已设置为允许访问不安全内容),如下图所示,控制台报错。
出现上图所示错误,是因为浏览器在访问嵌套多级的HTTP站点时,会出现安全性问题,因为HTTP不具备加密传输能力,容易被黑客攻击,因此浏览器会限制访问不安全内容,以保障用户安全。嵌套多级HTTP页面时,即使我们设置了浏览器允许访问不安全内容,也无法完全解决安全问题(浏览器不会完全无视),此时,建议嵌套的子页面升级为HTTPS协议,以提高安全性。