HTTP常见问题答疑

javaweb开发当中使用的协议HTTP,本节总结了HTTP场景下几个常见问题:

1  HTTP请求方式get与post的区别?

    * GET一般用于获取或查询资源信息,这就意味着其安全(没有改变资源的状态)与幂等(对同一个URL的多个请求返回同样的结构);

      POST一般用于更新资源, 其既不安全,也不幂等;

    * GET请求时,客户端把要发送的数据添加到URL后面(就是把数据放置在HTTP协议头中,GET是通过URL提交数据),并且用" ? "连接,各个变量之间用" & "连接;HTTP协议没有对URL长度进行限制,由于特定的浏览器及服务器对URL的长度存在限制,所以,传递的数据量有限;

      POST把要传递的数据放在HTTP请求报文的消息体中,HTTP协议也没有进行大小限制,起限制作用的是服务器的处理程序的能力。

    * 通过GET提交数据,用户名与密码将明文出现在URL上,登录页面可能被浏览器缓存,或其他人通过查看历史记录就能获用户数据信息;

      POST提交的数据传递的数据放置在消息体中,所以既不会被缓存,也不会留下历史记录,安全性相对较高(但可用抓包工具获取传递内容)。

2  HTTP和socket的区别,两种协议谁更高效

     * 创建socket连接时,可以指定使用的传输层协议,socket可以支持不同的传输层协议(TCP/UDP),当使用TCP协议进行连接时,该socket连接就是一个TCP连接,socket一旦建立连接,同行双方即可开始相互发送数据内容,知道双方连接断开。

      同HTTP不同的是HTTP只能基TCP;

    * HTTP连接使用的是"请求 - 响应"的方式,不仅在请求时先建立连接,而且需要客户端向服务端发出请求后,服务器才能回复数据。(很多情况下,需要服务器主动向客户端推送数据,保持客户端与服务端数据的实时与同步);

      socket连接时,服务器可以直接发送给客户端,且效率高(至少可以不用解析HTTP报文头部的一些字段)。

3  HTTP与HTTPS的区别

    * HTTPS更安全 

          HTTPS协议是由 SSL+HTTP协议构建的可以加密传输,身份认证的网络协议,要比HTTP协议更安全,所有传输都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密; 

          HTTP是超文本传输协议,信息是明文传输,没有加密,通过抓包工具可以分析其信息内容;

    * HTTPS需要申请证书

          HTTPS协议需要到CA申请证书,一般免费证书很少,需要收费,HTTP则不需要;

    * 端口不同

         HTTP使用的80端口,HTTPS使用的是443端口

    * 所在层次不同

        HTTP协议运行在TCP之上,HTTPS是运行在SSL/TLS之上的HTTP协议,SSL/TLS运行在TCP之上。

    

猜你喜欢

转载自blog.csdn.net/Jorgen_s/article/details/89340529