相关方法
(方法名区分大小写)
①、GET方法:获取资源
GET方法用来请求访问已被URI识别的资源。指定的资源经服务器端解析后返回响应内容。
②、POST方法:传输实体主体
POST方法用来传输实体的主体。虽然用GET方法也可以传输实体的主体,但一般不用GET方法进行传输,而是用POST方法。虽说POST的功能和GET的很像,但POST的主要目的不是获取响应的主体内容。
③、PUT方法:传输文件
PUT方法用来传输文件。就像FTP协议的文件上传一样,要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。
由于HTTP/1.1的PUT方法自身不带验证机制,任何人都可以上传文件,存在安全问题,因此一般WEB网站不用这个方法。
④、HEAD方法:获得报文首部
HEAD方法和GET方法一样,只是不返回报文主体部分。用于确认URI的有效性及资源更新的日期时间等。
⑤、DELETE方法:删除文件
与PUT相反,按请求URI删除指定的资源。与PUT一样,由于存在安全问题,一般不使用。
⑥、CONNECT方法:要求用隧道协议连接代理
CONNECT方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL(Secure Sockets Layer,安全套接层)和TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。
⑦、OPTIONS:询问支持的方法
OPTIONS方法用来查询针对请求URI指定的资源支持的方法。
⑧、TRACE:追踪路径
TRACE方法是让Web服务器端将之前的请求通信环回给客户端的方法。客户端通过TRACE方法可以查询发出去的请求是怎样被加工/篡改的。不常用,有安全问题。
持久连接(HTTP Persistent Connections, 也成为HTTP keep-alive或HTTP connection reuse)
HTTP是在TCP/IP基础上运作的,初始的HTTP协议版本中,每进行一次HTTP通信就要断开一次TCP连接。为了减少通信开销,提出了持久连接的方法,只要任意一端没有明确提出断开连接,就保持TCP连接状态。HTTP/1.1版本的默认连接都是持久连接
管线化
持久连接使得管线化(pipelining)方式成为可能。可以同时并行发送多个请求,而不需要一个个地等待回应。
使用Cookie的状态管理
HTTP是无状态协议,不对之前发生过的请求和响应的状态进行管理。 无状态可以减少服务器的CPU及内存资源的消耗。
为了保留无状态协议这个特征,同时解决类似登陆认证类似问题,于是引入Cookie技术。Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。Cookie会根据从服务器端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。
服务器端发现客户端发送过来的Cookie后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。
HTTP的缺点及与HTTPS的区别
HTTP的缺点:
①、通信使用明文(不加密),内容可能会被窃听。
②、不验证通信方的身份,因此有可能遭遇伪装。
③、无法证明报文的完整性,所以有可能已遭篡改。
HTTPS:
HTTP+加密+认证+完整性保护=HTTPS。
HTTPS是身披SSL(Secure Socket Layer)外壳的HTTP。HTTP直接和TCP通信,当 使用SSL时,则先和SSL通信,再有SSL和TCP通信。HTTPS采用共享秘钥加密和公开秘钥加密两者并用的混合加密机制。与HTTP相比速度会变慢