“https”为什么不能加载外部的js

JavaScript010

“https”为什么不能加载外部的js,第1张

因为你加载了外部js,就被判断为不安全的了。

建议能直接复制远程的js,就复制下来吧。

HTTPS链接的建立过程中涉及到服务器端证书、客户端证书(可选)、服务器端的非对称秘钥以及后续通信过程中使用的对称秘钥几个内容。

客户端对HTTPS的地址发出请求,并且将自己的SSL版本号等信息发送给服务器

服务器接收到请求,将服务器证书和公钥等信息返回给客户端

客户端接收到证书后向证书颁发机构验证证书的合法性。如果证书不合法(比如自行签发的证书),则向用户发出警告并确认是否继续,用户可以选择在此时离开终止HTTPS的链接。

证书合法或客户端确认在不安全的情况下继续,客户端生成pre-master secret并且使用2中收到的服务器公钥加密后发送给服务器。如果是使用交互策略的TLS,则同时需要将客户端的证书发送给服务器。服务器检查客户端的证书颁发机构是否在信任列表中,以及证书内容是否合法。若不合法,结束本次会话。

服务器使用私钥解密pre-master secret,然后双方通过一种实现商定好的加密算法生成本次通讯使用的master secret。

双方互相通知对方本次SSL握手成功,其后均使用master secret对传输内容进行加密。

浏览器默认是不允许在HTTPS里面引用HTTP资源的,一般都会弹出提示框,用户确认后才会继续加载,用户体验非常差。

而且如果在一个HTTPS页面里动态的引入HTTP资源,比如引入一个js文件,会被直接block掉的。

Chrome 21之后,在SSL加密页面embed非SSL的Flash会怎样呢?会被默默的屏蔽掉,只留下一句console报告。

浏览器为了安全,https下跨协议调用http的是不行的,控制台里会有警告。

所以你只能去找https协议的 css、js资源了。也有文章说https页面中可引用http的图片,发现虽然不会报红错,但是会有黄色的提醒。最好的方法是使用https的资源。