跳到主要内容

通过 SSL 发布安全内容

如果您需要安全保护的页面已经设计完成,那么最艰难的工作已经完成。然而,如果您的设计师使用了错误的代码,您可能需要修改部分 HTML 以确保 URL 正常工作。使用 https 地址(URL)时,您的内容应安全加载。

阻止使用 SSL 保护的站点正确显示锁形图标的最常见问题之一,是页面中包含指向不安全内容的链接。例如,如果您的网站通过 https://domain.com/ 安全访问,而页面使用以下代码加载您的徽标:

由于此代码指定了 HTTP 而非 HTTPS,它将阻止页面正确显示锁形图标。本文将涵盖以下主题,帮助您理解不同类型的链接及如何最佳地保护它们:

  • 内部链接与外部链接
  • 相对路径与绝对路径
  • 相对路径
  • 绝对路径
  • 不安全的外部链接

内部链接与外部链接

您可以使用的链接类型取决于内容所在的位置。本文将参考并指导以下两种链接类型:

  • 内部链接: 您链接的一些内容可能位于您自己的服务器上,可通过您的域名访问。这类内容称为内部链接。
  • 外部链接: 当您需要链接到托管在外部服务器上的内容,且无法通过您自己的域名访问时,这称为外部链接。

相对路径与绝对路径

当引用由您的域名托管的页面或图片(即内部链接)时,可以使用相对路径。使用相对路径可以确保浏览器假设网站上的内部链接使用与访问者加载页面时相同的访问协议。

这样可以确保链接在多种情况下(例如有无 SSL)均能正常工作,无需重写代码。

然而,如果您使用的是指向外部 URL 的链接,则必须使用绝对路径来链接到所需内容。

相对路径

您希望安全加载的媒体内容(图片、视频、音频)或内部链接应使用如下相对路径引用:

<img src="images/banner.jpg" />

通过使用相对路径,文件位置的一部分由浏览器推断。浏览器会使用网页的实际 URL 并遵循相对路径。因此,当您在安全页面上发布带有相对路径的内容时,内容将自动安全加载。

例如,对于安全页面 _https://domain.com/category/page.html_,图片将被假定位于 _https://domain.com/category/images/banner.jpg_。

正斜杠(前导斜杠)

在创建相对链接或路径时,请注意是否添加初始正斜杠(即“/”)。使用前导正斜杠(如下例所示)告诉浏览器从域名根目录开始查找链接:

<img src="/images/banner.jpg" />

上述示例明确告诉浏览器在域名根目录查找内容。如果您的安全页面是 _https://domain.com/category/page.html_,此示例会让浏览器假定图片位于域名根目录 _https://domain.com/images/banner.jpg_,而非相对于链接所在位置 _https://domain.com/category/_。

许多用户更倾向于使用前导正斜杠,因为这样在移动页面时链接不会断开。

说明: 此处所说的“正斜杠”指的是“/”,即 URL 路径中的斜杠,与反斜杠“\”不同。

绝对路径

使用绝对路径时,图片位置的任何部分都不会被推断。浏览器将仅根据提供的路径加载资源,而不考虑网页的实际 URL。

这可用于强制浏览器尝试从指定域名及 HTTP 或 HTTPS 加载站点。内部链接可使用绝对路径,外部链接必须使用绝对路径。

页面上不安全内容的主要原因是引用了如下绝对路径的媒体:

<img src="http://domain.com/images/banner.jpg" />

上述绝对路径引用了 http 而非 https,导致安全站点出现问题。必须将其改为 https,以强制浏览器通过 SSL 加载图片或 URL:

<img src="https://domain.com/images/banner.jpg" />

注意: 如果您通过 HTTPS 引用的资源未使用 SSL 加密(例如您无法控制的外部网页),链接将产生错误。有关如何解决此问题的信息,请参见下文。

不安全的外部链接

在开发网站时,链接到外部资源往往很有用,而这些资源通常未使用 SSL 加密。强制这些资源通过 HTTPS 加载会导致访问者点击链接时出现错误。

作为解决方案,在创建链接时(此方法不适用于图片,建议始终本地托管图片以确保安全),您可以使用 URL 缩短服务,通过 HTTPS 提供一个链接,最终解析到通过 HTTP 提供的站点。

Google 提供了一个 URL 缩短服务,可用于此目的:

https://goo.gl/

只需使用该服务将 HTTP URL 转换为缩短的 HTTPS URL,例如:

<a href="http://domain.com/images/banner.jpg">

可转换为:

<a href="https://goo.gl/rsXxti">

该 URL 仍然完全可用并正确解析,但不会对您的 SSL 产生问题。

附注: 目前 Google 已停止对新用户开放 goo.gl 服务,建议根据实际情况选择其他 URL 缩短服务。