【问题标题】:Which HTTP features are different in HTTPS?HTTPS 中有哪些不同的 HTTP 功能?
【发布时间】:2014-01-28 04:45:04
【问题描述】:

维基百科将 HTTP(S) 或 S-HTTP 定义为 security layer over HTTP

从技术上讲,它本身并不是一个协议;相反,它是 简单地将超文本传输​​协议 (HTTP) 分层的结果 SSL / TLS协议的顶部,从而增加了安全能力 SSL/TLS 到标准 HTTP 通信。

从逻辑上讲,这意味着 HTTP 的每个功能和方面(例如 methodsstatus codes)都存在于 HTTPS 中。

在将现有 HTTP REST 接口切换到 HTTPS 时,我是否应该期待任何警告或差异?

【问题讨论】:

  • 兴趣收藏。

标签: http https


【解决方案1】:

似乎对您可以使用 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 几年后,我不知道有任何其他警告。

【讨论】:

    【解决方案2】:

    性能注意事项


    HTTPS 客户端/浏览器缓存

    Top 7 Myths about HTTPS - 请注意有关在浏览器中以不同方式处理的 HTTPS 缓存的评论。不过是从 2011 年开始,浏览器可能已经改变了。

    Will web browsers cache content over https


    更多关于为什么没有 HTTPS 代理缓存

    Can a proxy server cache SSL GETs? If not, would response body encryption suffice?


    通过 HTTPS 在 Websockets 中升级命令

    虽然 WebSocket 协议本身不知道代理服务器和防火墙,但它具有与 HTTP 兼容的握手功能,因此 HTTP 服务器可以与 WebSocket 网关或服务器共享其默认的 HTTP 和 HTTPS 端口(80 和 443)。 WebSocket 协议定义了一个 ws:// 和 wss:// 前缀,分别表示一个 WebSocket 和一个 WebSocket 安全连接。两种方案都使用 HTTP 升级机制来升级到 WebSocket 协议。

    http://en.wikipedia.org/wiki/WebSocket

    【讨论】:

      【解决方案3】:

      作为 REST 的编码人员,当您将 HTTP REST 切换到 HTTPS 时,我看不到任何可能的警告。有时,如果您找到一些,您肯定也会将它们放在普通的 HTTP REST 中。

      【讨论】:

        猜你喜欢
        • 2015-04-21
        • 2019-02-04
        • 1970-01-01
        • 2014-03-17
        • 2021-07-24
        • 1970-01-01
        • 1970-01-01
        • 2011-06-09
        • 2016-01-19
        相关资源
        最近更新 更多