我使用Nginx 1.8.0运行ubuntu 14.04。 在https中打开网页时,由于css / js / images无法加载,页面显示为中断。 我得到这个错误“ Blocked loading mixed active content ”
这是我的nginx.conf : https : //github.com/adithyakhamithkar/ansible/blob/master/roles/nginx/templates/nginx.j2
这是我的虚拟主机文件: https : //github.com/adithyakhamithkar/ansible/blob/master/roles/nginx/templates/virtualhost_ssl.j2
请有人请指导我如何解决这个问题。
考虑下面的html文件:
<html> <head> </head> <body> <img src="http://example.com/some/image.png"> </body> </html>
如果这个html文件是通过https服务的 – 它会一直生成混合内容警告。 尝试修复/some/image.png的后续请求将不起作用,请求被浏览器阻止,并且不会到达服务器。
唯一有效的解决scheme是修复主要请求的html源代码,以便从https://请求所有资源,也就是将html更改为:
<html> <head> </head> <body> <img src="/some/image.png" alt="same domain and port as this html page please" /> </body> </html>
或这个:
<html> <head> </head> <body> <img src="https://example.com/some/image.png" alt="explicit https" /> </body> </html>
在评论中你已经提到wordpress作为例子; 对于WordPress的安装唯一的东西(原则上,在实践中期望一些搞砸)是改变网站的url,以便wordpress认为https://example.com是安装的根url。
混合活动内容现在在Firefox 23及以上版本默认被阻止。 不确定其他浏览器
什么是混合内容?
当用户访问通过HTTP提供的页面时,他们的连接对于窃听和中间人(MITM)攻击是开放的。 当用户访问通过HTTPS提供的页面时,他们与Web服务器的连接将通过SSL进行身份validation和encryption,从而保护他们免受窃听者和MITM攻击。
但是,如果HTTPS页面包含HTTP内容,则即使通过HTTPS提供主页面,攻击者也可以读取或修改HTTP部分。 当HTTPS页面有HTTP内容时,我们称该内容为“混合”。 用户访问的网页只是部分encryption的,因为有些内容是通过HTTPencryption的。 混合内容阻止程序阻止HTTPS页面上的某些HTTP请求。
听起来你正在链接非ssl静态内容。 你应该像链接你的内容
<a href='//host.com/file.png>
如果您需要从其他主机链接。