【问题标题】:HTTPS and how to reference files and imagesHTTPS 以及如何引用文件和图像
【发布时间】:2011-11-05 10:18:40
【问题描述】:

我应该如何从安全区域的网页中引用我的 css 文件(位于非安全区域)。我考虑过复制它(将一个移到安全区域),但这似乎效率很低。

非常感谢任何建议。 (ps.很可能会有一些后续问题哈哈)

【问题讨论】:

  • 您不能也通过https:// 处理样式表吗?
  • 它必须工作,但您应该指示网络服务器接受或通过 https(443 端口)传输
  • 如果你想避免来自 Internet Explorer 的“混合内容”警告,你需要让它工作。无论如何,您的问题非常不清楚 - 您的问题是关于如何设置 Web 服务器以便它从与非 SSL 相同的 Web 根目录提供 SSL 数据?

标签: css security http https


【解决方案1】:

您始终可以通过使用相对/根路径来避免此问题:

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

如果您必须使用完整的 URL,我不确定为什么您不能使用 https 协议(这是正确的解决方案),但还有一个选择:不要指定完全是一个协议。

<link rel="stylesheet" href="//example.com/css/screen.css">

http://paulirish.com/2010/the-protocol-relative-url/

如果浏览器正在通过 HTTPS 查看当前页面,那么它将使用 HTTPS 协议请求该资产,否则它通常*会使用 HTTP 请求它。这可以防止 IE 中出现可怕的“此页面同时包含安全和非安全项目”错误消息,从而将您的所有资产请求保持在同一协议中。

但是:

警告:在 &lt;link&gt; 或 @import 用于样式表时,IE7 和 IE8 会下载文件两次。但是,所有其他用途都很好。

因此,如果您必须指定完整的 URL,最好/正确的方法是:

<link rel="stylesheet" href="https://example.com/css/screen.css">

真的别无选择。 CSS 文件本身中的图像和资源的相对路径应该适用于任何一种方法,并且不会触发安全错误。如果您需要 CSS 文件中的绝对 URL,那么您可以使用相同的技巧。

【讨论】:

  • 但他说他不能这样做(即通过 SSL 提供 CSS 文件)。这就是让我想知道这个问题到底是关于什么的原因。
  • “不能”?那为什么还要问这个问题呢?协议相对 URL 将在有或没有 https 的情况下工作,这就是重点 - 从 http 切换到 https 时他不必更改任何内容。我看到上面"No - this wouldn't work"的评论,但是没有任何意义。
  • 是的,这个问题目前没有多大意义。他需要澄清。 (你的答案很可能就是他想要的!)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-22
  • 1970-01-01
  • 2011-07-20
  • 1970-01-01
  • 2022-01-20
  • 2022-10-01
  • 2019-10-14
相关资源
最近更新 更多