css样式在ssl上消失

时间:2012-06-07 22:05:33

标签: html css html5 internet-explorer

通过SSL连接时,特定样式将从样式表中删除。我无法想出任何押韵或理由,但它的风格始终如一。也许值得注意的是,用display来隐藏的元素:none;是可见的。列表样式也会恢复为默认浏览器设置,并且还会删除一些背景图像(并非所有图像)。所有URI路径都是相对的 - 无论是页头还是样式本身。

例如,以下作品......

body { background: url(../images/bg-yellowstripes.jpg) repeat 0 0; }

但是,下一行不会......

#masthead { background: url(../images/bg-header.jpg) repeat-x 0 100%; }

任何人都有这方面的经验,可以帮助页面正确显示并避免IE混合内容警告?只影响Internet Explorer btw。 Firefox,Safari,Chrome都正常呈现页面,没有任何SSL警告。

4 个答案:

答案 0 :(得分:2)

听起来你正在用绝对路径加载你的CSS文件。例如,如果您的网站将通过HTTP和HTTPS提供,则应使用相对路径。

绝对:(不要这样做,IE会在通过SSL查看时提供安全警告)

<link rel="stylesheet" href="http://mydomain.com/css/style.css" />

<强>相对

<link rel="stylesheet" href="/css/style.css" />

如果样式来自其他域(例如CDN),请使用双斜杠而不是指定协议。这将导致路径在发出CSS请求时继承请求页面的协议。

<link rel="stylesheet" href="//otherdomain.com/css/style.css" />

另外,使用IE开发人员工具。他们会准确地告诉您从SSL所在页面加载的网络资源,而不是。

答案 1 :(得分:0)

除了相对路径结构,如果它是IE9及以下,客户端中存在内存限制,如果样式表变大,它将停止加载它们。如果你要缓存一堆文件,我可以看到这种情况发生了

答案 2 :(得分:0)

如果您要从其他网址(例如:fonts.googleapis.com)加载字体,请检查CSS中的序言。确保路径还指定:&#34; HTTPS&#34;在路上。这个简单的更改立即解决了我的CSS over HTTPS问题。

OLD PREAMBLE: @import url(&#39; http://fonts.googleapis.com/css?family=Roboto ...等)

正确的序言: @import url(&#39; https://fonts.googleapis.com/css?family=Roboto ...等)

答案 3 :(得分:-1)

尝试在css背景路径中添加引号,如下所示:

body { background: url('../images/bg-yellowstripes.jpg') repeat 0 0; }

另外,我读过background属性需要特定的值顺序(颜色url Xpos Ypos重复)。所以它会是这样的:

body { background: url('../images/bg-yellowstripes.jpg') 0 0 repeat; }

除此之外,当我在http://网站上加载https://时,我的样式也被删除了一次。但是既然你正在使用相对路径,我猜它是别的东西。

这可能是一个缓存问题。