我的网站运行子域名(yyy.example.com),但我需要包含主域名(example.com)的CSS文件。我们运行的CMS不允许我在预览阶段做任何服务器端的东西,所以我很难通过https发送一个包含CSS导入到http的页面。因此,我的所有IE用户都收到混合内容警告。
除了在每台客户端计算机上为域维护单独的安全设置之外,是否有任何客户端方式可以防止这种情况发生?
答案 0 :(得分:9)
在CSS链接中使用协议相对URL。
如此
<link rel="stylesheet" type="text/css" href="//example.com/style.css">
而不是
<link rel="stylesheet" type="text/css" href="http://example.com/style.css">
它会自动选择父请求的协议,这也适用于HTTPS。
答案 1 :(得分:3)
据我所知,没有办法避免这种警告。特别是出于此目的:警告您即使您认为您的页面是SSL加密的,但其中一些内容却不是。您需要通过HTTP提供原始页面(不推荐),或通过HTTPS提供CSS文件。
答案 2 :(得分:1)
当你说你不能做“服务器端”的东西时,你的意思是你不能触摸你的CMS,或者你没有root访问你的HTTP服务器?
因为如果您确实可以访问HTTP服务器,那么您可以设置一个非常简单的reverse proxy(如果您使用的是Apache,则为mod_proxy)。这将允许您在HTML中使用相对路径,而HTTP服务器将充当任何“远程”位置的代理。实际上,这种技术也可用于缓解一些跨站点脚本问题。
在mod_proxy中设置反向代理的基本配置指令是ProxyPass。您通常会按如下方式使用它:
ProxyPass /css/ http://example.com/css_dir/
在这种情况下,浏览器会请求https://yyy.example.com/css/main.css
,但服务器将通过充当http://example.com/css_dir/main.css
的代理来实现此目的。它不会引发浏览器警告,并且可以正常使用SSL。
答案 3 :(得分:1)