HTTP协议的请求方法
一.HTTP的请求的方法
HTTP协议的请求方法一共有:8种。分别是:GET、HEAD、PUT、DELETE、POST、OPTIONS、TRACE、CONNECT
二.不同的请求的概念
1.GET
GET可以说是最常见的了,它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。
2.HEAD
HEAD和GET本质是一样的,区别在于HEAD不含有呈现数据,而仅仅是HTTP头信息。有的人可能觉得这个方法没什么用,其实不是这样的。想象一个业务情景:欲判断某个资源是否存在,我们通常使用GET,但这里用HEAD则意义更加明确。
3.PUT
这个方法比较少见。HTML表单也不支持这个。本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。举个例子:如一个用于提交博文的URL,/addBlog。如果用PUT,则提交的URL会是像这样的”/addBlog/abc123”,其中abc123就是这个博文的地址。而如果用POST,则这个地址会在提交后由服务器告知客户端。目前大部分博客都是这样的。显然,PUT和POST用途是不一样的。具体用哪个还取决于当前的业务场景。 向指定资源位置上上传其最新内容(从客户端向服务器传送的数据取代指定文档的内容)
4.DELETE
删除某一个资源。基本上这个也很少见,不过还是有一些地方比如amazon的S3云服务里面就用的这个方法来删除资源。请求服务器删除Request-URI所标识的资源。
5.POST
向服务器提交数据。这个方法用途广泛,几乎目前所有的提交操作都是靠这个完成。Post 向指定资源提交数据进行处理请求(提交表单、上传文件),又可能导致新的资源的建立或原有资源的修改
6.OPTIONS
这个方法很有趣,但极少使用。它用于获取当前URL所支持的方法。若请求成功,则它会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”等。返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性
7.Trace
回显服务器收到的请求,用于测试和诊断
8.Connect
HTTP/1.1协议中能够将连接改为管道方式的代理服务器
三. GET和POST有什么区别?
1.GET是客户端向服务器发送请求网页页面的请求,是向服务器发索取数据的一种请求。POST是客户端向服务器上传一些文件的请求,是向服务器提交数据的一种请求。
2.GET请求的参数会跟在 URL 后进行传递,请求的数据会附在URL之后,以?分割URL和传输数据,参数之间以&相连,%XX中的XX为该符号以16进制表示的ASCII,如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密。GET 方法提交数据不安全,数据置于请求行,客户端地址栏可见。Post请求则作为http消息的实际内容发送给web服务器,数据放置在HTML Header内提交,Post没有限制提交的数据。Post比Get安全,当数据是中文或者不敏感的数据,则用get,因为使用get,参数会显示在地址,对于敏感数据和不是中文字符的数据,则用post。POST 方法提交数据安全,数据置于消息主体内,客户端不可见
3.GET传输的数据有大小限制,因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了,不同的浏览器对URL的长度的限制是不同的。POST 方法提交的数据大小没有限制。
4.GET请求的数据会被浏览器缓存起来,用户名和密码将明文出现在URL上,其他人可以查到历史浏览记录,数据不太安全。在服务器端,用Request.QueryString来获取 Get 方式提交来的数据。POST表示可能修改变服务器上的资源的请求,在服务器端,用Post方式提交的数据只能用 Request.Form 来获取