Wikipedia将HTTP(S)或S-HTTP定义为security layer over HTTP:
从技术上讲,它本身并不是一种协议;相反,它是 简单地分层超文本传输协议(HTTP)的结果 SSL / TLS协议的顶部,从而增加了安全功能 SSL / TLS到标准HTTP通信。
逻辑上,它暗示HTTP中的每个功能和方面(例如methods和status codes)都存在于HTTPS中。
将现有HTTP REST接口切换为HTTPS时,我是否应该注意任何警告或差异?
答案 0 :(得分:7)
似乎没有任何限制,您可以使用HTTP而不是HTTPS。唯一的限制/差异与连接加密的事实有关。正如Eugene所提到的,这包括HTTPS不能代理缓存的事实。 但有一些警告:
如果您开始对最初使用HTTP的网站使用HTTPS,则 HTTP内联内容可能会出现问题,例如:如果您使用第三方HTTP服务或跨域内容:
在这种情况下,许多浏览器将禁用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证书由受信任的CA权威机构签名,那么如果您的用户将使用HTTPS,他们将不得不通过可怕的可怕的4-5步程序接受证书。将普通用户(不知道问题)暴露给此几乎是不可能和不专业的。 在这种情况下,您必须购买证书。由于这个原因,您很多时候最终都使用HTTP而不是HTTPS。因此,如果您无力购买证书,浏览器的偏执会强迫您多次使用不安全的HTTP协议而不是HTTPS。同样,6 - 7年前,事实并非如此。
如果在同一会话中同时使用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)
Top 7 Myths about HTTPS - 注意有关HTTPS缓存的注释,这些注释在浏览器中的处理方式不同。从2011年开始,浏览器可能已经发生了变化。
Will web browsers cache content over https
Can a proxy server cache SSL GETs? If not, would response body encryption suffice?
虽然WebSocket协议本身并不知道代理服务器和防火墙,但它具有HTTP兼容的握手功能,因此HTTP服务器可以与WebSocket网关或服务器共享其默认的HTTP和HTTPS端口(80和443)。 WebSocket协议定义了一个ws://和wss://前缀,分别表示WebSocket和WebSocket Secure连接。两种方案都使用HTTP升级机制升级到WebSocket协议。
答案 2 :(得分:-1)
作为REST的编码器,当您将HTTP REST切换到HTTPS时,我没有看到任何可能的警告。如果你找到一些,你肯定会在正常的HTTP REST中使用它们。