似乎对您可以使用 HTTP 而不是 HTTPS 执行的操作没有任何限制。唯一的限制/差异与连接已加密这一事实有关。正如 Eugene 提到的,这包括 HTTPS 不能被代理缓存的事实。 但有一些注意事项:
HTTPS 页面内的 HTTP 内联内容
如果您开始对最初使用 HTTP 的网站使用 HTTPS,则可能会出现 HTTP 内联内容 的问题,例如如果您使用第 3 方 HTTP 服务或跨域内容:
- 脚本:谷歌地图 API
- iframe:其他网站、Facebook、谷歌广告……
- 图片、静态谷歌地图……
在这种情况下,许多浏览器会禁用 HTTPS 页面中“不安全”的 HTTP 内容!对于用户来说,关闭它非常困难(尤其是在 Firefox 中)。
唯一可靠的解决方法是使用相对于协议的 URL。所以,而不是:
<script src="http://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
这会在 HTTPS 页面上中断,您只需使用
<script src="//maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
它将在 HTTP 页面上用作 HTTP,在 HTTPS 页面上用作 HTTPS。这解决了问题。
当然,缺点是它对大量网络流量进行无用加密,不易受到攻击,通常不必加密。这是偏执的浏览器安全方法的代价(就像一年前一样,在这种情况下,FF 没有发出警告,我非常高兴。世界在变化......)
如果您的域没有签名 SSL 证书
当然,另一个需要注意的是,如果您的域没有 SSL 证书,该证书由受信任的 CA 机构签署,那么如果您的用户使用 HTTPS,他们将不得不通过一个可怕的可怕的 4-5 步程序来接受证书。让普通用户(不知道问题所在)接触到这一点几乎是不可能且不专业的。 在这种情况下,您将不得不购买证书。很多时候,您最终会使用 HTTP 而不是 HTTPS。因此,如果您买不起证书,浏览器的偏执会迫使您多次使用不安全的 HTTP 协议而不是 HTTPS。同样,6-7 年前,情况并非如此。
混合使用 HTTP 和 HTTPS - cookie 和授权问题
如果您在同一会话中同时使用 HTTP 和 HTTPS,您可能会遇到问题,因为有时它们会被视为单独的站点(即使 URL 的其余部分相同)。这个might be the case of cookies - in some cases they will not be shared between HTTP and HTTPS。此外,HTTP authentication - RFC2617 不会在 HTTP 和 HTTPS 之间共享。但是,这种类型的身份验证现在在 Web 上非常少见,可能是由于登录表单缺乏自定义。
所以,如果你开始使用 HTTPS,最简单的方法就是使用 HTTPSonly。
在通过 HTTPS 运行 HTTP 几年后,我不知道有任何其他警告。