CSS应该根据协议(HTTP与HTTPS)而有所不同吗?

时间:2013-01-24 00:44:54

标签: html css ssl

我使用通常的嫌疑人开发了一个网站:MVC& jQuery的。生产站点是SSL ...但我也有一个后门来通过http测试它。

页面的整体结构是:

<body>
  <div class="container">
    <div class="nav"/>
    <div class="control"/>
  </div>
</body>

...相关的.css看起来像这样:

.container { height: 100%; width: 100%; }
.nav { float: left; width: 23%; overflow-y: auto; overflow-x: hidden; }
.control { float: right; width: 74%; }

当我通过http查看时,导航的内容太大而且它的垂直滚动条显示出来。但是,当我通过https地址查看时,.nav会在页面上运行,整个页面都有一个滚动条。

我希望在http视图中有行为。

如果我添加:

html, body { height: 100%; width: 100%; }

...它在http中没有净效果...但是,它的行为就像我有溢出一样:隐藏在html和/或正文上。

行为的差异至少在这些浏览器中是一致的:ie8,ie9和chrome。

我有什么办法可以将http行为保存在https中吗?在任何地方都记录了行为的差异吗?

我发布了该页面的图片,如同在同一网站上的http和https绑定所示:

flickr.com/photos/92527792@N04/8409094719/in/photostream flickr.com/photos/92527792@N04/8410189866/in/photostream

为了清楚起见,将文件加载到浏览器中似乎没有任何问题。 .css,.js和html都很好。差异似乎在于浏览器在内容关闭后如何处理内容,将端口443中的html与通过80的html略有不同。

感谢您的时间,

粘土

2 个答案:

答案 0 :(得分:1)

http://和https://不是文件格式,也不是以任何方式改变文件,它们表示文件将通过例如传输的协议。 file://和ftp://指向同一个文件也会传输相同的数据。

确保在两种情况下都使用相同的.css文件。

答案 1 :(得分:0)

Clay,

确保页面使用协议相对uri 请求其.css文件。 (假设:违规的css存在于页面内部的单独文件中。)

否则,您会获得请求安全内容的非安全页面,反之亦然,这将导致某些安全设置下的加载问题。 (有些浏览器只是拒绝访问,其他浏览器首先发出警告,有些浏览器会提供用户对此行为的偏好。)

协议相对uri 是通过从原始网址中删除协议创建的。例如:
如果原始网址显示为https://sub.domain.com/folder/my.css 其协议相对对应的内容为://sub.domain.com/folder/my.css