一、HTTP的8种请求方式

HTTP的请求行种包含多中请求方式,这些请求方式表明了要以何种方式来处理URI所标识的资源。

GET

请求获取由 Request-URI 所标识的资源

POST

请求服务器接收在请求中封装的实体,并将其作为由 Request-Line 中的 Request-URI 所标识的资源的一部分

HEAD

请求获取由 Request-URI 所标识的资源的响应消息报头

PUT

请求服务器存储一个资源,并用 Request-URI 作为其标识符

DELETE

请求服务器删除由 Request-URI 所标识的资源

TRACE

请求服务器回送到的请求信息,主要用于测试或诊断

CONNECT

要求利用隧道协议连接代理

OPTIONS

询问支持的方法,或者查询与资源相关的选项和需求

1、GET

GET 方法用于获取由 Request-URI 所标识的资源的信息,GET方法是默认的HTTP请求方法,例如当我们通过在浏览器的地址栏中直接输入网址的方式去访问网页的时候,浏览器采用的就是 GET 方法向服务器获取资源。
我们可以使用GET方法来提交表单数据,用GET方法提交的表单数据只经过了简单的编码,同时它将作为URL的一部分向服务器发送,因此,如果使用GET方法来提交表单数据就存在着安全隐患上。同时数据的长度十分有限,因为浏览器对URL的长度会有限制。
Http://localhost/login.php?username=aa&password=1234POST方法是GET的一个代替方法,主要用于向服务端提交数据,特别是大量的数据。 在请求头信息结束之后的两个回车换行之后(实际是空一行),就是表单提交的数据。

2、POST

POST方法不同于GET方法提交表单,它是把数据放到了报文主体中,而不是编入URL中,这样就克服了GET方法的不安全性和数据量小的问题。通常提交表单需要采用POST方法。

从编程的角度上来说,GET方法提交的数据可以再环境变量中获取,而POST的数据可以在标准输出流中获取。

3、HEAD
HEAD 方法与 GET 方法很相似,它们的区别在于 HEAD 方法只是请求消息报头,而不是完整的内容。对于 HEAD 请求的回应部分来说,它的 HTTP 头部中包含的信息与通过 GET 请求所得到的信息是相同的。利用这个方法,不必传输整个资源内容,就可以得到 Request-URI 所标识的资源的信息。这个方法通常被用于测试超链接的有效性,是否可以访问,以及最近是否更新。

二、GET和POST请求的区别

  • GET在浏览器回退时是无害的,而POST会再次提交请求。
  • GET产生的URL地址可以被Bookmark,而POST不可以。
  • GET请求会被浏览器主动cache,而POST不会,除非手动设置。
  • GET请求只能进行url编码,而POST支持多种编码方式。
  • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
  • GET请求在URL中传送的参数是有长度限制的,而POST么有。
  • 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
  • GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
  • GET参数通过URL传递,POST放在Request body中。