`
zhanshenny
  • 浏览: 260039 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HTTP请求方法总结

    博客分类:
  • HTTP
 
阅读更多

      HTTP请求方法并不是只有GET和POST,只是最常用的。据RFC2616标准(现行的HTTP/1.1)得知,通常有以下8种方法:OPTIONSGETHEAD、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请求相关总结

    nodejs http请求相关总结 通过node提供的http模块,可以通过其提供的get()和request()两个方法发起http请求,get()是对request()方法的封装,方便发起get请求,如果要实现post请求,那么需要对request()方法进行封装...

    HTTP Client请求公共方法HttpUtils

    不同的服务,不同的系统之前的数据交互是在所难免的, HttpClient在不同的服务之前请求数据使用广泛,而且也会有各种各样的问题,SO 总结一些公共方法,避免重复造车

    java发送http get请求的两种方法(总结)

    下面小编就为大家带来一篇java发送http get请求的两种方法(总结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    python发送HTTP请求的方法小结

    主要介绍了python发送HTTP请求的方法,实例总结了GET、HEAD与POST方式发送http请求的相关技巧,需要的朋友可以参考下

    php中请求url的五种方法总结

    其中wget命令在本地虚机测试请求http://www.baidu.com时,没有成功,在远程服务器上却可以,考虑时DNS解析的问题,于是直接请求IP成功下载了index.html的文件。 这里只提供了方法,其中的优缺点需要详细了解每一个...

    安全验证漏洞修复总结

    安全验证漏洞修复总结 `

    iOS的HTTP请求和请求回执类用法小结

    NSURLRequest类中常用方法和属性总结: //通过类方法创建默认的请求对象 /* 通过这种方式创建的请求对象 默认使用NSURLRequestUseProtocolCachePolicy缓存逻辑 默认请求超时时限为60s */ + (instancetype)request...

    实现PHP多线程异步请求的3种方法

    在网上看过很多版本的PHP异步请求方法,这里简单总结几个常用方法分享给大家 1、用CURL实现一步请求 CURL扩展是我们在开发过程中最常用的一种方法,他是一个强大的HTTP命令行工具,可以模拟POST/GET等HTTP请求,然后...

    nginx黑名单和django限速,最简单的防恶意请求方法分享

    django项目遭遇cc攻击...这里总结下两种解决方法: 1.设置nginx黑名单 vi blockip.conf创建文件,输入: deny x.x.x.x; 编辑nginx.conf, 在http{}内添加: include blockip.conf; 验证配置: [root@server nginx]#

    常见的四种POST 提交数据方式(小总结)

    HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中,POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。 我们知道,HTTP 协议是以 ...

    Ajax和Comet技术总结

    open方法用户启动一个HTTP请求,不过它不会真的发送HTTP请求。open方法接收3个参数,分别表示请求的HTTP方法、请求的URL、是否异步。XHR对象的第二个方法send用于发送open所启动的请求。send方法接收1个参数,表示...

    完美兼容各大浏览器获取HTTP_REFERER方法总结

    IE可以识别的 HTTP_REFERER 提交是通过click 触发的事件或者是 Form 表单提交的请求,下面是根据网上的资料总结的一个方法: [removed] function referURL(url){ var isIe=(document.all)?true:false; if(isIe) { ...

    利用python的socket发送http(s)请求方法示例

    这是个在写计算机网络课设的时候碰到的问题,卡了我一天,所以总结一下。 其实在之前就有用requests写过python爬虫,但是计算机网络要求更底层的实现,刚好我看到了[这篇文章]1结果发现他就是用socket来实现的请求,...

    Node.js模拟发起http请求从异步转同步的5种用法

    主要介绍了Node.js模拟发起http请求从异步转同步的5种方法,下面总结了几个常见的库 API 从异步转同步的几种方法。需要的朋友可以参考下

    解决nodejs中使用http请求返回值为html时乱码的问题

    今天用nodejs进行http请求时返回的数据是一个html文件,然后我还是按照以前解析json数据的方法。果不其然报错了:SyntaxError: Unexpected token in JSON at position 0 没办法,只好换一种方法,将接受到的Buffer...

    C-ATM.zip jsp+servlet 项目【练手/总结/巩固】

    2. 重定向是通过发送特定的HTTP响应码告知浏览器请求的资源已被移到新的URL上,浏览器接收到响应后会重新发送请求到新的URL地址,因此URL路径会改变。 3. 转发是服务器内部进行的操作,服务器直接将请求转发给另一个...

    原生js调用json方法总结

    HTTP请求方法: GET:用于获取数据,如浏览帖子 ajax.judgeXmlHttpRequest('get', 'index.php', function(data){ alert(data); //这是服务器返回的数据 }) POST:用于上传数据,如用户注册 var dataJson = { ...

    java 面试题 总结

    Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别...

    PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】

    本文实例总结了PHP判断访客是否手机端(移动端浏览器)访问的方法。分享给大家供大家参考,具体如下: 在平常工作开发中,我们通常需要开发出PC端和移动端两个不同的系统,从而根据访问端的不同进入到不同的操作界面中...

Global site tag (gtag.js) - Google Analytics