问题描述:一个前端页面,有一个按钮点击后会请求ajax接口,拿到一个地址。此时js调用location.href=url报错。提示错误为
已阻止载入混合活动内容“http://url地址”。
这个问题是 An HTTPS page that includes content fetched using cleartext HTTP is called a mixed content page.意思是如果https页面引入了http的调用,就是一个混合内容页面,是不安全的,被浏览器阻止。
继续阅读,理清楚混合内容到底是什么东西,它有什么问题导致浏览器需要阻止它:
混合内容分为两类 mixed passive/display content 和 mixed active content。第一种起个名字叫被动或显示内容,第二种就叫活动内容。两者的区别在于其安全威胁,受到中间人攻击时,第一种可能的危害是页面内容错误、cookie被窃取,第二种会导致被引导到钓鱼网站、敏感数据被窃取。
现在遇到的问题是第二种,还不是很清楚其中的原理。先看看怎么解决这个问题。
继续翻越火狐的文档,找到了如何解决这个问题的文章,只写了一个方法将所有接口都提换成https。。。这个是解决问题的方法,本身接口就是http和https都支持。问题解决了,其实想找的是能否牺牲安全性,就要在https页面调用http接口,或降低一些安全性。毕竟有些用户可能无法提供https的接口。
继续找资料。
网友评论