解决http转https在chrome里blocked的问题
2016-03-02 16:54
567 查看
什么是HTTPS?
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容 就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同 于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
问题描述
浏览器默认是不允许在HTTPS里面引用HTTP资源的,一般都会弹出提示框,用户确认后才会继续加载,用户体验非常差。而且如果在一个HTTPS 页面里动态的引入HTTP资源,比如引入一个js文件,会被直接block掉的。Chrome 21之后,在SSL加密页面embed非SSL的Flash会怎样呢?会被默默的屏蔽掉,只留下一句console报告。解决方案
可以使用iframe的方式引入HTTP资源,比如在HTTPS里面播放优酷的视频,我们可以先在一个HTTP的页面里播放优酷视频,然后将这个页 面嵌入到HTTPS页面里就可以了,另外一个典型的例子是在HTTPS页面里通过AJAX的方式请求HTTP资源,Chrome是不允许直接AJAX请求 HTTP的。如果两个页面的内容都可以控制的话,当前窗口可以iframe窗口进行通信的。如何避免在HTTPS里面引用HTTP
对于同时支持HTTPS和HTTP的资源,引用的时候要把引用资源的URL里的协议头去掉,例如://www.example.com /scirpt.js,这样相当于相对路径,即浏览器会自动根据当前是HTTPS还是HTTP来给资源URL补上协议头的,可以达到无缝切换。参考:使用相对Url无缝切换HTTP-HTTPS总结
如果是站内资源,最好是HTTP和HTTPS各一份,然后再通过相对路径的方式引用,这样就可以完美的解决掉这个问题了,比如Google首页就是2种方式都提供了。对于站外的资源如果不支持HTTPS那就只能用iframe了原文链接:
http://www.niutifa.com/?p=315
相关文章推荐
- TCP的三次握手与四次挥手过程介绍
- Nginx https加密以及nginx日志配置与管理
- 使用相对Url无缝切换 HTTP HTTPS
- iOS网络开发(8)文件下载的实现
- 常见的HTTP请求头与响应头
- Java https服务器证书认证问题解决方案
- urllib2.URLError: <urlopen error unknown url type: https>
- 关于TCP_NODELAY和TCP_CORK选项
- Linux tcpdump命令详解
- BP神经网络推导过程详解
- 机器学习算法汇总:人工神经网络、深度学习及其它
- php调用java写的webservices提示Uncaught SoapFault exception: [HTTP] Not Found
- http_build_query函数带来的困扰
- 配置Tomcat使用https协议(配置SSL协议)
- TCP 过程
- 计算机网络地址分类
- iOS网络开发(7)大牛们的杰作AFNetworking
- 网络编程浅谈
- 计算机网络知识整理
- httpclient 发送消息体