在IE中没有混合内容警告的域中链接到CSS文件?

时间:2009-12-24 17:44:22

标签: css include internet-explorer

我的网站运行子域名(yyy.example.com),但我需要包含主域名(example.com)的CSS文件。我们运行的CMS不允许我在预览阶段做任何服务器端的东西,所以我很难通过https发送一个包含CSS导入到http的页面。因此,我的所有IE用户都收到混合内容警告。

除了在每台客户端计算机上为域维护单独的安全设置之外,是否有任何客户端方式可以防止这种情况发生?

4 个答案:

答案 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)