HTTP请求方法并不是只有GET和POST,只是最常用的。据RFC2616标准(现行的HTTP/1.1)得知,通常有以下8种方法:OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE和CONNECT。
一、HEAD方法跟GET方法相同,只不过服务器响应时不会返回消息体。一个HEAD请求的响应中,HTTP头中包含的元信息应该和一个GET请求的响应消息相同。这种方法可以用来获取请求中隐含的元信息,而不用传输实体本身。也经常用来测试超链接的有效性、可用性和最近的修改。
一个HEAD请求的响应可被缓存,也就是说,响应中的信息可能用来更新之前缓存的实体。如果当前实体跟缓存实体的阈值不同(可通过Content-Length、Content-MD5、ETag或Last-Modified的变化来表明),那么这个缓存就被视为过期了。
HEAD请求常常被忽 略,但是能提供很多有用的信息,特别是在有限的速度和带宽下。主要有以下特点:
1、只请求资源的首部;
2、检查超链接的有效性;
3、检查网页是否被修改;
4、多用于自动搜索机器人获取网页的标志信息,获取rss种子信息,或者传递安全认证信息等
二、GET方法用来获取Request-URI标识的任何(实体形式的)信息。如果Request-URI是关于一个数据处理过程,则应在响应中返回产生的数据,而不是过程中的源文本,除非该文本碰巧就是输出。
如果请求消息头包含If-Modified-Since、If-Unmodified-Since、If-Match、If-None-Match或If-Range,则GET方法的语义就变为“conditional GET”。只有在有条件的头域描述下,此conditional GET方法的请求才能传输。这种conditional GET方法试图通过刷新缓存实体来减少不必要的网络使用,避免多次请求或传输客户端已有的数据。
如果请求消息头包含Range,则GET方法的语义就变为“partial GET”。partial GET方法只请求传输实体的一部分。这种partial GET方法试图通过补全这些部分取回的实体来减少不必要的网络使用,避免传输客户端已有的数据。
GET请求方法是最常用的HTTP请求之一,有以下几个特点:
1、是默认的请求方法;
2、GET请求通常用于获取信息,而不是修改,所以应该是安全的、幂等的。
3、请求数据表现在URL上,以名称/值的形式发送。通常URL的长度限制为2KB,对于正常请求,基本不会超出该限制,除非是XML。
4、在IE和Opera等浏览器会产生URL缓存。如果不增加冗余的请求参数,响应会返回缓存中数据,导致结果不一致。
5、安全性低。不过POST请求也只比GET请求更安全一点点,获取开放的POST数据也是轻而易举的事,除非使用安全的网络连接,例如SSL。
三、POST方法用来请求原始服务器接受请求中包含的实体,附属于Request-Line中的Request-URI标识资源。POST用来完成以下功能:
POST方法实际完成的功能取决于服务器,并且通常依赖于Request-URI。发送的实体属于URI,就像一个文件属于一个目录、一篇新闻文章属于它所发表的新闻组、或者一条记录属于一个数据库 。
POST方法完成的行为可能不会产生一个URI标识的资源。在这种情况下,200(OK)或204(No Content)都是适合的响应状态,取决于响应是否包含描述结果的实体。
如果原始服务器上已经创建了资源,则响应应该是201(Created),并且包含一个描述请求状态的实体、一个新资源的引用,和一个Location头。
这种方法的响应不能缓存,除非该响应包含适合的Cache-Control或Expires头域。不过,303响应可以用来引导用户获取缓存的资源。
POST请求必须遵守信息传输要求
POST是最常用的请求方法之一,和GET方法的最大区别就是发送的数据和URL分离,因此没有长度限制。如果使用POST方法,还应将请求头中的Content-type设为application/x-www-form-urlencoded。POST方法有以下特点:
1、主要用于向服务器传送数据,例如发表博文,而GET主要用于获取;
2、数据封装在请求中,而不是URL中,因此没有长度限制;
3、不能缓存,而GET请求会缓存,在IE等浏览器中会直接返回缓存数据。
四、PUT方法请求那些封装在Request-URI的实体。如果Request-URI引用一个已存在的资源,则该封装实体应该作为原始服务器上的修改版本。如果Request-URI不是指向一个已存在的资源,并且该URI可被请求的用户代理定义为新资源,则原始服务器可用此URI创建新的资源。如果新资源被创建,这个原始服务器就必须通过201(Created)响应通知用户代理。如果已有资源被修改,则应发送200(OK)或204(No Content)响应,表示成功完成了该请求。如果Request-URI既没有创建也没用修改资源,则应给予适当的错误响应来反映问题本质。实体的接受者不能忽略任何不理解或没有实现的Content-*(例如 Content-Range)头部,并且必须返回501(Not Implemented)响应。
如果请求经过缓存,并且Rrequest-URI标识出一个或多个当前缓存的实体,则那些实体视为过期了。该方法的响应不会被缓存。
POST和PUT请求的根本区别在于Request-URI的不同意义。POST请求中的URI表示处理该封闭实体的资源,该资源可能是个数据接收过程、某种协议的网关、或者接收注解的独立实体。然而,PUT请求中的URI表示请求中封闭的实体--用户代理知道URI的目标,并且服务器无法将请求应用到其他资源。如果服务器希望该请求应用到另一个URI,就必须发送一个301(Moved Permanently)响应;用户代理可通过自己的判断来决定是否转发该请求。
不同的URI可以标识同一个资源。例如,一篇文章可以用“当前版本”URI来标识,区别于其他特殊版本的URI。这种情况下,一个通过URI的PUT请求可以获取原始服务器上定义的其他URI。
HTTP/1.1没有定义一个PUT请求如何影响原始服务器的状态。
PUT请求必须遵守信息传输要求。
除非另有说明,PUT请求中的实体头部应该用于PUT创建或修改的资源上。
PUT方法通常用于向服务器发送请求,如果URI不存在,则要求服务器根据请求创建资源,如果存在,服务器就接受请求内容,并修改URI资源的原始版本。就是通常俗称的上传资源。
分享到:
相关推荐
nodejs http请求相关总结 通过node提供的http模块,可以通过其提供的get()和request()两个方法发起http请求,get()是对request()方法的封装,方便发起get请求,如果要实现post请求,那么需要对request()方法进行封装...
不同的服务,不同的系统之前的数据交互是在所难免的, HttpClient在不同的服务之前请求数据使用广泛,而且也会有各种各样的问题,SO 总结一些公共方法,避免重复造车
下面小编就为大家带来一篇java发送http get请求的两种方法(总结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要介绍了python发送HTTP请求的方法,实例总结了GET、HEAD与POST方式发送http请求的相关技巧,需要的朋友可以参考下
其中wget命令在本地虚机测试请求http://www.baidu.com时,没有成功,在远程服务器上却可以,考虑时DNS解析的问题,于是直接请求IP成功下载了index.html的文件。 这里只提供了方法,其中的优缺点需要详细了解每一个...
安全验证漏洞修复总结 `
NSURLRequest类中常用方法和属性总结: //通过类方法创建默认的请求对象 /* 通过这种方式创建的请求对象 默认使用NSURLRequestUseProtocolCachePolicy缓存逻辑 默认请求超时时限为60s */ + (instancetype)request...
在网上看过很多版本的PHP异步请求方法,这里简单总结几个常用方法分享给大家 1、用CURL实现一步请求 CURL扩展是我们在开发过程中最常用的一种方法,他是一个强大的HTTP命令行工具,可以模拟POST/GET等HTTP请求,然后...
django项目遭遇cc攻击...这里总结下两种解决方法: 1.设置nginx黑名单 vi blockip.conf创建文件,输入: deny x.x.x.x; 编辑nginx.conf, 在http{}内添加: include blockip.conf; 验证配置: [root@server nginx]#
HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中,POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。 我们知道,HTTP 协议是以 ...
open方法用户启动一个HTTP请求,不过它不会真的发送HTTP请求。open方法接收3个参数,分别表示请求的HTTP方法、请求的URL、是否异步。XHR对象的第二个方法send用于发送open所启动的请求。send方法接收1个参数,表示...
IE可以识别的 HTTP_REFERER 提交是通过click 触发的事件或者是 Form 表单提交的请求,下面是根据网上的资料总结的一个方法: [removed] function referURL(url){ var isIe=(document.all)?true:false; if(isIe) { ...
这是个在写计算机网络课设的时候碰到的问题,卡了我一天,所以总结一下。 其实在之前就有用requests写过python爬虫,但是计算机网络要求更底层的实现,刚好我看到了[这篇文章]1结果发现他就是用socket来实现的请求,...
主要介绍了Node.js模拟发起http请求从异步转同步的5种方法,下面总结了几个常见的库 API 从异步转同步的几种方法。需要的朋友可以参考下
今天用nodejs进行http请求时返回的数据是一个html文件,然后我还是按照以前解析json数据的方法。果不其然报错了:SyntaxError: Unexpected token in JSON at position 0 没办法,只好换一种方法,将接受到的Buffer...
2. 重定向是通过发送特定的HTTP响应码告知浏览器请求的资源已被移到新的URL上,浏览器接收到响应后会重新发送请求到新的URL地址,因此URL路径会改变。 3. 转发是服务器内部进行的操作,服务器直接将请求转发给另一个...
HTTP请求方法: GET:用于获取数据,如浏览帖子 ajax.judgeXmlHttpRequest('get', 'index.php', function(data){ alert(data); //这是服务器返回的数据 }) POST:用于上传数据,如用户注册 var dataJson = { ...
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别...
本文实例总结了PHP判断访客是否手机端(移动端浏览器)访问的方法。分享给大家供大家参考,具体如下: 在平常工作开发中,我们通常需要开发出PC端和移动端两个不同的系统,从而根据访问端的不同进入到不同的操作界面中...