HTTPS中哪些HTTP功能不同?

时间:2014-01-09 14:52:11

标签: http https

Wikipedia将HTTP(S)或S-HTTP定义为security layer over HTTP

  

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

逻辑上,它暗示HTTP中的每个功能和方面(例如methodsstatus codes)都存在于HTTPS中。

将现有HTTP REST接口切换为HTTPS时,我是否应该注意任何警告或差异?

3 个答案:

答案 0 :(得分:7)

似乎没有任何限制,您可以使用HTTP而不是HTTPS。唯一的限制/差异与连接加密的事实有关。正如Eugene所提到的,这包括HTTPS不能代理缓存的事实。 但有一些警告:

HTTPS页面内的HTTP内联内容

如果您开始对最初使用HTTP的网站使用HTTPS,则 HTTP内联内容可能会出现问题,例如:如果您使用第三方HTTP服务或跨域内容:

  • 脚本:google maps API
  • iframes:其他网站,脸书,谷歌广告......
  • 图片,静态谷歌地图,......

在这种情况下,许多浏览器将禁用HTTPS页面中的“不安全”HTTP内容!对于用户来说,很难关闭它(特别是在Firefox中)。

唯一可行的方法是使用协议相对网址。所以,而不是:

<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和HTTPS之间不会共享HTTP authentication - RFC2617。但是,这种类型的身份验证现在在Web上非常罕见,可能是由于缺少自定义登录表单。

因此,如果您开始使用HTTPS,那么最简单的方法就是使用HTTPS


在通过HTTPS运行HTTP几年后,我不知道任何其他警告。

答案 1 :(得分:1)

性能注意事项


HTTPS客户端/ Broswer缓存

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 Secure连接。两种方案都使用HTTP升级机制升级到WebSocket协议。

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

答案 2 :(得分:-1)

作为REST的编码器,当您将HTTP REST切换到HTTPS时,我没有看到任何可能的警告。如果你找到一些,你肯定会在正常的HTTP REST中使用它们。