精华内容
下载资源
问答
  • 2021-11-19 14:15:21

    HTTP协议简介

    超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信。HTTP 的工作方式是客户机与服务器之间的请求-应答协议。web 浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端。例如:客户端(浏览器)向服务器提交 HTTP 请求;服务器向客户端返回响应。响应包含关于请求的状态信息以及可能被请求的内容。

    HTTP的常用方法

    1.GET方法

    GET方法用于使用给定的URI从给定服务器中检索信息,即从指定资源中请求数据。使用GET方法的请求应该只是检索数据,并且不应对数据产生其他影响。

    2.POST方法

    向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

    3.HEAD方法

    向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回,仅传输状态行和标题部分。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。

    4.PUT方法

    PUT方法用于将数据发送到服务器以创建或更新资源,它可以用上传的内容替换目标资源中的所有当前内容。即向指定资源位置上传其最新内容。

    5.DELETE方法

    DELETE方法用来删除指定的资源,它会删除URI给出的目标资源的所有当前内容。

    6.CONNECT方法

    HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

    7.OPTIONS方法

    允许客户端查看服务器的性能。

    8.TRACE方法

    回显服务器收到的请求,主要用于测试或诊断。

    GET与POST的区别

    1.后退按钮/刷新

    GET:无害。

    POST:数据会被重新提交(浏览器应该告知用户数据会被重新提交)。

    2.书签

    GET:可收藏为书签。

    POST:不可收藏为书签。

    3.缓存

    GET:能被缓存。

    POST:不能被缓存。

    4.编码类型

    GET:application/x-www-form-urlencoded

    POST:application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。

    5.历史

    GET:参数保留在浏览器历史中。

    POST:参数不会保存在浏览器历史中。

    6.对数据长度的限制

    GET:当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的,URL 的最大长度是 2048 个字符。

    POST:没有限制。

    7.对数据类型的限制

    GET:只允许 ASCII 字符。

    POST:没有限制。也允许二进制数据。

    8.安全性

    GET:安全性较差,因为所发送的数据是 URL 的一部分。

    POST:更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。

    9.可见性

    GET:数据在 URL 中对所有人都是可见的。

    POST:数据不会显示在 URL 中。

    10.请求次数

    GET:发送一次http请求。

    POST:先发送请求头再发送请求体,相当于两次请求。

    11.刷新

    GET:不会刷新数据。

    POST:刷新,数据会被重复提交。

    12.速度

    GET:直接发送请求头和数据,所以快。

    POST:比get 慢,因为post在发送数据前会先将请求头发给服务器进行确认,然后才真正发送数据。

    更多相关内容
  • HTTP协议漫谈 - HTTP协议请求方法

    千次阅读 2018-03-19 23:06:45
    前言 在上一篇文章《HTTP协议漫谈 - HTTP协议... ...其中起始行又分为请求行和状态行,请求行是HTTP请求中的起始行,它又包含了三个部分:请求方法,请求URI和HTTP协议版本。本文就来介绍HTTP请求中的请求方法。 ...

    前言

    在上一篇文章《HTTP协议漫谈 - HTTP协议历史和报文结构》中介绍了HTTP协议的历史和版本变化,以及HTTP协议报文的总体结构。

    按照HTTP/1.1 RFC文档中的定义,HTTP报文包括起始行,头域和消息体三个部分。其中起始行又分为请求行和状态行,请求行是HTTP请求中的起始行,它又包含了三个部分:请求方法,请求URI和HTTP协议版本。本文就来介绍HTTP请求中的请求方法。

    请求方法(Request Methods)

    HTTP协议的请求方法有很多,一般可以分为标准的请求方法和扩展的请求方法。标准的请求方法指的是在HTTP协议中定义的请求方法,扩展的请求方法指的是在其他协议中定义的请求方法。

    标准的请求方法

    在HTTP/1.0版本(RFC 1945)中定义了GET、POST和HEAD三个方法,在HTTP/1.1的最初版本(RFC 2068)中,则定义了GET、HEAD、PUT、POST、DELETE、TRACE、OPTIONS七个方法,在HTTP/1.1的第二版(RFC 2616)中,又增加了一个CONNECT方法,之后的HTTP/1.1的第三版(RFC 7231)中没有添加新的方法。这样,在HTTP/1.1中就有八个标准的HTTP请求方法:GET、HEAD、PUT、POST、DELETE、TRACE、OPTIONS和CONNECT。在HTTP/2(RFC 7540)中添加了一个PRI方法,它只在客户端和服务端建立连接时使用,PRI请求作为一个连接序言,其报文结构和一般的HTTP报文结构并不相同。

    HTTP协议要求HTTP服务端必须实现GET和HEAD方法,其他方法可以根据需要实现。此外,协议还要求,如果HTTP服务端接收到一个已经实现,但不能被用于相应的资源的请求方法,需要返回错误码405,表示Method Not Allowed。如果HTTP服务端接收到一个未知的方法,则需要返回错误码501,表示未实现 (Not Implemented)。(注意501并非只用于接收到未知的请求方法,还有其他情况也会返回501。)

    HTTP请求报文中直接将方法对应的名字写入到HTTP请求行中,请求方法区分大小写,所有标准的HTTP方法都是全部大写字母的,所以使用get和GET会是两个不同的方法。参考文章HTTP method names: upper or lower case?

    扩展的请求方法

    HTTP协议允许在其他协议或规范中对请求方法进行扩展,除了八个标准的HTTP方法外,还有一些扩展的HTTP方法。

    RFC 2068 19.6.1 Additional Request Methods一节中,描述了PATCH,LINK和UNLINK三个附加请求方法,这里的Additional Request Methods属于Additional Features一章,Additional Features并不属于HTTP/1.1标准的一部分,它仅仅提供了一些当时已有的HTTP实现中的协议元素用来参考,其中有一些是实验性的功能。在随后的RFC 2616中也提到,这三个方法并未普遍实现。此外,这里的描述是相当简略,并没有完整的定义这三个方法的语义。所以虽然这三个方法存在于HTTP协议的最初版本中,但并不作为标准的请求方法来看待,甚至很难将它们作为扩展的请求方法,因为它们并没有完整的语义。

    出于对部分资源更新的需求,PATCH方法又被重新定义在RFC 5789中,RFC 5789是一个PROPOSED STANDARD。不同于RFC 2068中的PATCH方法,在RFC 5789中完整的定义了PATCH方法的语义和用法,并给出了示例,可以认为这里的PATCH方法是一个新的方法,和RFC 2068中的PATCH方法仅仅是名字和基本概念相同。

    WebDAV是基于HTTP/1.1的一个扩展协议,最早定义在RFC 2518中,之后更新为RFC 4918。它在HTTP/1.1的基础上定义了一组额外的HTTP请求方法,头域和状态码等。其中新增请求方法主要有BIND,CHECKIN,CHECKOUT,COPY,DELETE,LOCK,MKCOL,MOVE,PROPFIND,PROPPATCH,REPORT,SEARCH ,UNBIND,UNCHECKOUT,UNLOCK,UPDATE等。

    无论是标准的HTTP方法还是扩展的HTTP方法都需要在IANA(Internet Assigned Numbers Authority)注册。IANA除了管理Internet中使用域名和IP地址外,另一项重要职责是对各个互联网协议中使用的名字和数字进行注册和分配。在IANA官网首页上对其职责的描述为。
    这里写图片描述

    从Protocol Registries进去就可以看到所有已注册的项目列表,其中比较常用的有:记录所有已注册的基于TCP/UDP的服务名及其端口号”Service Name and Transport Protocol Port Number Registry”;记录所有已注册的Mime类型的”Media Types”;以及和HTTP协议相关的”HTTP Method Registry”,”HTTP Status Codes”,”HTTP Upgrade Tokens”等。在HTTP Method Registry中可以找到已注册的HTTP方法列表。可以看到,这里包含了八个标准的HTTP请求方法,还包含了HTTP/2中定义的PRI方法,RFC 5789中定义的PATCH方法,RFC 2068中定义的LINK和UNLINK方法和WebDAV中定义的一系列方法。

    请求方法的属性

    在RFC 2068中,讨论了请求方法的两类属性,安全性和幂等性,在RFC 7231中,又增加了方法的可缓存性。

    安全的方法(Safe Methods)

    说到安全,一般都会想到保护数据不被窃取,保证系统不被攻击,但这里安全的含义并不是这样。一个安全的请求方法(safe method),指的是这个方法在语义上是只读的,它不会对服务器产生任何预期修改,一个安全的请求(safe request)指的是这条请求的请求方法是安全的。

    当客户端对某个资源(URI)执行了一个安全的请求方法,在语义上来说,表示它期望获得一些信息,而不是去主动改变服务端上的数据。对安全方法的合理使用,不应当对服务端产生有害的结果。这里对安全方法的定义特别强调了它是一个语义上的安全,区别于实现安全。站在客户端的角度来看,一个安全的请求应当是只读的,无害的。然而这并不能保证它在服务端的实现就一定是只读的,一个安全的请求方法在实现上可能会对服务器数据进行一些修改,这类修改通常是为了满足一定的业务需求,但如果没有恰当的实现,就可能会产生一些有害的结果。例如,大部分的服务端程序都会将请求信息写入到日志文件中,即使是一个安全的请求方法,仍然会在日志文件中写入这条请求。再比如,用户点击了网页上的一个广告,在产生一个安全的请求的同时,还需要对后台的广告账户进行计费操作。

    根据上述定义,GET,HEAD,OPTIONS和TRACE方法被认为是安全的方法,其他方法则被认为是不安全的。

    区分安全不安全的请求方法的主要目的在于,让网络爬虫和网页预加载程序能够安心工作,不用担心会造成什么危害。此外,它能够让浏览器在访问一些不被信任的页面时,对网页中执行的不安全的请求方法采取一定的策略来限制它们的活动。浏览器需要能够区分出不安全的请求,让用户能够在这些请求被提交之前,意识到可能存在的风险。

    幂等的方法(Idempotent Methods)

    在数学和计算机科学中,一项操作被称为幂等的表示这项操作执行任意多次和执行一次的结果是完全一样的。例如求绝对值的运算就是幂等的abs(abs(x))≡ abs(x)。

    对一个HTTP请求来说,如果一个请求方法多次独立执行和只执行一次对服务器产生的预期效果完全相同,则称这个请求方法是幂等的,同样的,如果一个请求的请求方法是幂等的,则称这个请求是幂等的请求。根据此定义,PUT,DELETE是幂等的方法,此外所有安全的请求方法也都是幂等的。

    这里有两点需要注意。
    1. 这里的幂等操作涉及的执行结果指的是对服务端产生的预期结果,并不是客户端得到的报文内容。例如,GET请求是幂等的,执行任意多次都不会对服务器产生任何预期修改。但这并不是说客户端每次执行GET得到的报文内容是一样的。
    2. 和安全性一样,幂等性同样是一种从客户端角度来看请求方法的性质,它同样是一种语义上的性质。它并不代表服务端实现上一定是幂等的。例如,服务端可以自由的为每条GET请求记录日志,也可以为每条PUT请求记录修改时间,显然,这时每次幂等的操作在服务端都会产生不同的结果,但这些不同的结果并非是客户端请求时所预期的。

    区分幂等操作的意义在于,当客户端发送一条请求后,在获取服务器响应前出现连接错误导致无法确定本次请求是否成功时,可以安全的再次重复这次请求,而不用担心会产生什么副作用。

    可缓存的方法(Cacheable Methods)

    在RCF 2616中并没有Cacheable Methods这一节内容,它是在RFC 7231中新增的。

    可缓存的请求方法指的是该方法对应的响应消息能够在客户端被存储,并在之后的请求中被直接使用,而不再需要从服务端重新获取。可缓存的方法有GET,HEAD和POST,但大部分的时候都只实现了GET和HEAD的缓存。

    方法的可缓存性只是标记了哪些方法的结果是可以被缓存的,哪些方法的结果则不需要考虑缓存,但是具体的缓存策略和缓存实现则非常复杂。在RFC 2616中用了专门的一章来讲述HTTP协议的缓存问题,而在最新的版本中,则将其写入到一个独立的RFC文档RFC 7234中。

    标准请求方法的属性

    根据上述定义,可以得到如下HTTP协议标准请求方法的分类表格。
    这里写图片描述

    常用请求方法的语义

    如前所述,标准的HTTP请求方法一共有八个:GET、HEAD、PUT、POST、DELETE、TRACE、OPTIONS和CONNECT。TRACE、OPTIONS和CONNECT由于在实际开发中几乎不会遇到,这里不打算介绍了,需要了解的可以查看RFC文档和相关文章。扩展请求方法中只有PATCH方法应用比较广泛。因此,下文只介绍GET、HEAD、PUT、POST、DELETE和PATCH方法的语义。

    在介绍具体的方法语义之前,先阐述一点,HTTP协议的请求方法都是从UA发起,服务端接收并作出响应,这些方法语义表达的是一个预期的结果,也就是UA发起这个请求后希望服务端如何处理这次请求。后文也会对这一点做进一步的阐述。

    1. GET方法
      GET方法用来向服务器请求指定的资源,它是万维网中信息检索的主要方式。当服务器收到一个GET请求后,它会将所请求的资源内容放到响应体中,客户端收到GET响应后,根据头域中的一些信息,对响应体进行解析,从而得到所需要的资源。

    2. HEAD方法
      HEAD方法用来请求资源的相关属性,而非资源本身,HEAD方法的响应消息中没有响应体。对HEAD请求,服务器需要保证对同一个URI,HEAD请求的响应内容和GET请求的响应内容去掉响应体后完全相同。

      在协议文档中没有对GET和HEAD请求中请求体的语义作出定义,为GET和HEAD请求添加请求体是允许的,但由于语义上未定义,所以服务器实现时有可能会直接将其丢弃,或拒绝连接,这取决于服务端的实现和配置。参见文章HTTP GET with request body

      GET和HEAD请求都是可缓存的,对GET请求的缓存可以在随后的GET和HEAD请求中使用,而对HEAD请求的缓存则只能在随后的HEAD请求中使用。此外,如果已有GET请求的缓存,但缓存已过期,或强制指定HEAD请求不使用缓存,则收到的HEAD请求的响应消息可能会被用来验证或更新之前的GET请求的缓存。

    3. POST方法
      POST方法用于将请求报文中的消息体message body提交给服务器,请求目标资源对消息体内容进行相应处理,这通常会导致服务器上的状态发生变化。

      常见的POST方法的使用场景有:

      • 提供一块数据,例如一组HTML表单数据,供服务器处理。
      • 在BBS,blog,新闻组等网络系统中发布文章或信息。
      • 在服务器上创建新的资源对象。
      • 向已有的资源中添加新的数据

      一般来说POST方法的响应消息是不被UA缓存的,除非服务器在响应消息中明确指定有效期(Freshness Lifetime)信息(表示服务器明确希望这条响应消息被UA缓存),但即使在响应消息中附带了有效期,也不能保证一定会被客户端缓存,因为POST缓存并未普遍实现。

    4. PUT方法
      PUT方法用于将请求报文中的消息体message body提交给服务器,请求服务器创建一个新的目标资源,或者替换原先的目标资源。当一个PUT请求被成功执行后,意味着使用同样的请求URI执行GET请求,在响应消息体中会得到和原先PUT请求中消息体的等价表示。但是,不能保证这种状态变化是可观察的,因为在接收到任何后续GET之前,目标资源可能已经会被其他UA执行的请求所修改,或者之前PUT请求所需要的修改正在被服务器处理但还没有完成,因为UA收到PUT方法的成功响应仅仅表示本次请求的意图已经被服务器接受,但并不代表服务器已经完成了资源创建或替换的工作。

    5. DELETE方法
      对DELETE方法,在RFC 2616中是这样描述的。

      The DELETE method requests that the origin server delete the resource identified by the Request-URI.

      DELETE方法用来请求源服务器删除请求URI标识的目标资源。

      然而在RFC 7231中,对这段描述做了修改,在RFC 7231中是这样描述的。

      The DELETE method requests that the origin server remove the association between the target resource and its current functionality.

      DELETE方法用来请求源服务器删除目标资源与其当前功能之间的联系。也就是说,在新的RFC文档中定义的DELETE方法删除的不再是目标资源,而是删除一种联系。文档中随后做了补充说明,如果目标资源具有一个或多个表示,则它们可能会也可能不会被原始服务器销毁,其关联的存储可能会也可能不会被回收,这完全取决于资源的性质以及源服务器的实现。这段话进一步的说明了,当客户端发送一条DELETE请求,它所预期删除的是这个请求URI相关的功能,而不是删除这个请求URI对应的资源本身,资源本身是否删除取决于资源的属性和服务器实现。

      举例来说,/article/details/123456表示一篇文章,客户端对这个URI发送一条DELETE请求,它所预期的是删除这个URI和对应文章之间的关联,之后无法通过这个URI来查看这篇文章内容,至于文章本身是否需要删除,由服务器自行决定。也许这篇文章有多个URI,/article/details/654321也表示这篇文章,那么显然对/article/details/123456发送DELETE请求,并不能影响到通过/article/details/654321来查看文章内容。

      和GET方法一样,在协议中没有对DELETE请求中请求体的语义作出定义。

      DELETE方法的响应本身不可缓存,但对一个URI成功执行DELETE方法,会导致该请求URI的其他缓存失效。

    6. PATCH方法
      PATCH方法用于对资源进行部分修改。由于PATCH不是标准的HTTP方法,所以不能保证客户端和服务端都已经实现。例如,在JDK中HttpURLConnection类就不支持将请求方法设置为PATCH。

    请求方法的选取

    在实际应用中经常能听到各种讨论,例如,如果将数据放在请求URI中,是否能用GET代替POST来提交数据?PUT和POST都是用来提交数据,它们的区别是什么,能否用PUT替代POST使用?PUT和PATCH又该如何选取,既然PATCH用作局部更新,那它同样也可以用作全部更新,是否能用PATCH替代PUT使用?

    当遇到这类问题时,我们可以从语义上给出一系列的解释,指明它们该如何使用,以及不能混用的原因。

    GET和POST的选取

    在知乎上的这篇《get和post区别?》中对GET和POST的语义和用法做了很多分析。GET和POST从语义上来说很容易区分。GET在语义上用于请求指定的资源,它的安全的幂等的,不能被用来添加或更改服务器上的资源。而POST则是不安全,不幂等的,它的用途和GET相反,用来对创建新的资源,或对已有资源进行修改。所以如果要提交的数据用来查询,则使用GET方法,如果要提交的数据用来创建或修改,则用POST方法。例如,获取某个用户的信息,获取某个帖子的评论应该用GET方法,而注册用户,发表评论,点赞等则使用POST方法。

    POST和PUT的选取

    在RFC 2616中是这样描述POST和PUT的区别的。

    The fundamental difference between the POST and PUT requests is reflected in the different meaning of the Request-URI. The URI in a POST request identifies the resource that will handle the enclosed entity. That resource might be a data-accepting process, a gateway to some other protocol, or a separate entity that accepts annotations. In contrast, the URI in a PUT request identifies the entity enclosed with the request – the user agent knows what URI is intended and the server MUST NOT attempt to apply the request to some other resource. If the server desires that the request be applied to a different URI, it MUST send a 301 (Moved Permanently) response; the user agent MAY then make its own decision regarding whether or not to redirect the request.

    POST和PUT的区别在于请求URI代表的含义不同,对POST请求来说,URI表示对实体(也就是请求体message body)进行处理的资源,它可能是一个数据接受的过程,也可能是一个跳转到其他协议的网关,或者是一个接受注释的实体。而PUT请求中请求URI表示实体本身,一般就是实体对应的资源在服务器的地址。这段话相当抽象和难以理解,以下是个人对这段话的一些理解。

    对POST请求来说,URI表示对实体进行处理的资源,它实质上代表的是一种处理实体的方式。当客户端发送一条POST请求后,它希望服务器用请求URI代表的处理方式对请求体中的实体进行处理,至于请求URI代表何种处理方式,如何处理实体内容,取决于实际的业务逻辑。例如,可以用/api/comments表示一个发表评论的接口,客户端向这个地址发送一条POST请求,表示希望使用实体作为评论内容来发表一条评论,再比如/api/pay/buy_something表示付费购买接口,客户端向这个地址发送一条POST请求,表示希望对实体中所携带的商品信息进行付费购买操作。和发表评论不同的是,这里并没有将实体内容保存到某个资源中。一个请求URI也可以代表多种不同的处理,虽然这并不常见,例如同样是/api/comments接口,可以约定当添加消息头clear=true后,服务器会清空评论列表,当添加close=true后,服务器会关闭评论功能,这样/api/comments接口就有了发表评论,清空评论和关闭评论三个功能(当然清空评论和关闭评论的功能应当只对管理后台开放)。此外,POST请求也可以不需要实体,例如/api/comments/{id}/like表示一个对某条评论点赞的接口,客户端向这个地址发送一条POST请求,表示希望对这条评论进行点赞或取消点赞,服务端可以自行根据当前是否已点赞来决定是点赞还是取消点赞。

    对PUT请求来说,请求URI表示某个资源在服务器的地址,它不表示对实体进行处理的方式,因为PUT请求对实体处理方式是固定的,也就是用实体内容替换请求URI对应的资源的内容。当客户端发送一条PUT请求后,客户端的目的是将这条请求中的请求URI对应的资源内容被请求体中的数据所取代。例如,/api/comments/1992表示一条评论的地址,客户端向这个地址发送一条PUT请求,就表示希望使用实体内容替换此地址原先的评论内容。

    从这里可以看出,PUT请求实际上可以看成是一类特殊的POST请求,它表示的是一种固定处理方式的POST方法。换句话说,可以将PUT方法看成是从POST方法中分化出来的,专门用来处理用实体内容覆盖原先资源内容这样一种处理方式的POST方法。

    在前面介绍请求方法历史的时候有提到,最初的HTTP协议只有GET、POST和HEAD三个方法,之后才添加了其他的方法。从上述结论和方法的语义上可以很容易的推论,PUT,DELETE和PATCH方法都是从POST方法中分化出来的,方法本身代表了对实体的处理方式,请求URI则退化为表示资源的地址。

    回到之前的问题,由于POST方法的语义涵盖了PUT,DELETE和PATCH,所以无论何时,都可以用POST方法替代PUT,DELETE和PATCH来使用。但反过来,PUT,DELETE和PATCH方法只有在各自特定的场景下,才可以替代POST方法。

    PUT和PATCH的选取

    在语义上,PUT方法用于全量更新,而PATCH方法则适用于部分更新。对PUT来说,如果要更新一个资源,需要将该资源的全部内容都附加在报文的消息体中,即使是那些没有更改的部分,而PATCH方法则只需要提交那些有变化的部分。

    语义和实现之争

    虽然我们已经语义上给出这些方法的一系列的差异,但这并不能打消使用上的所有疑虑。这一方面是因为标准方法定义的语义并不能涵盖所有的业务场景,另一方面很多时候实现会和语义产生偏差。

    在之前在讨论请求方法的安全性和幂等性的时候就明确了一点,语义上的安全性并不等于实现上就是安全的,语义上的幂等性也不等于实现上的幂等性。同样的,对请求方法来说,虽然协议对各个请求方法的语义做了明确的指定,但语义不同于语法,语义对实现并没有实质性的约束,具体到每个接口的实现上,并不能保证它们一定会按照协议上的语义要求来实现。因此,在实现上完全可以用GET方法提交数据,也可以用PATCH替代PUT,甚至你还可以用GET来删除数据,用DELETE来做数据更新,这完全取决于服务端的实现。当然除非是个人的实验性项目,实际开发是不会这样来做的。这就像写代码的时候用setData()表示获取数据,getData()表示更新数据一样,虽然编译、运行都不会有任何问题,但这除了迷惑自己外显然毫无意义。

    因此,服务器在实现一个接口时,一般需要遵循协议中规定的语义,不能随意发挥,尤其是不能改变方法的安全性,幂等性和可缓存性,这除了能够保持统一的上下文环境,便于自己和他人的理解外,另一个重要的原因是,可以保持对UA和现行的互联网基础设施的兼容性。UA,CDN和网络中间节点需要根据标准方法语义的可缓存性来实现响应消息的缓存,网络爬虫也需要根据标准方法语义的安全性来决定是否执行请求。

    后记

    尽管已经用上了所有的空余时间,这篇《HTTP协议请求方法》仍然花了两周的时间才勉强完成,进度比预期要慢。文章在发表之前就已经修改了很多次,从19日发表之后到现在(22日)又做了十多次的修改,总体上是已经比较完善了,然而有些地方依然有欠缺,等后面有时间再来修补吧。接下来事情更多,所以后面的几篇HTTP协议文章的时间也许会更长。

    下一篇预计会介绍HTTP协议的请求URI,包括URI的语法,编解码和用法等,会同时涵盖URL和URN的内容。

    展开全文
  • Postman:请求方法、认证

    千次阅读 2019-09-25 21:10:04
    请求方法 HTTP有多种请求方法,如GET、POST、PUT、DELETE、PATCH、HEAD等,不同的请求方法定义了请求如何被服务器处理。Postman支持所有的HTTP请求方法,包括一些很少使用的请求方法,如PROPFIND、UNLINK等 ...

    请求方法

    1、HTTP有多种请求方法,如GET、POST、PUT、DELETE、PATCH、HEAD等,不同的请求方法定义了请求如何被服务器处

    2、Postman支持所有的HTTP请求方法,包括一些很少使用的请求方法,如PROPFIND、UNLINK等

    GET请求

    1、HTTP  GET请求方法是从服务器检索数据,数据由统一资源标识符(URI)标示

    2、GET请求将参数拼接在URI后面并传递给服务器(参数的Key与Value之间有"="号,Value不需要引号包裹,多个参数之间用"&"符号连接)

    如:

    https://postman-echo.com/get?foo1=bar&foo2=bar2中,第一个参数为"foo1=bar",第二个参数为"foo2=bar2"

    用Postman构建请求及收到的响应如下:在输入URL时会自动填写Params键值对

    注:带Cookie的get请求

    例1:带Cookie参数的headers请求


    例1_1:不带Cookie参数的headers请求

     

    POST请求

    1、HTTP POST请求方法是指将数据传输到服务器并引发响应,返回的数据取决于服务器的实现

    2、用户可以将参数拼接在统一资源定位符(URL)后面,也可以将请求参数放在Body中

    3、POST方法一般用来向服务器输入数据,它把提交的数据放置在是HTTP包的包体中
        ⑴请求方法选择POST
        ⑵在request url处输入请求url
        ⑶请求方法选为POST后,请求栏下的Body栏会高亮,也就是可以向request body中填充数据(添加再body种的参数并不会追加到url后面)

    4、Body中有4种数据填充形式,分别为:form-data、x-www-form-urlencoded、raw、binary

    例2:URL拼接参数

    注:
    一般来说这种将参数附在URL之后的POST请求方法很少遇到,现在很多都是将参数放在Body中的

    例2_1:以form-data形式发送参数

    例2_2:以application/x-www-form-urlencoded形式发送参数

    例2_3:以raw_text形式发送参数

    注:以raw形式发送参数时,还可以选中参数的格式。如JSON等

    例2_3_1:以raw_JSON形式发送参数

    例2_4:以binary形式发送参数

    注:
    1、从上面几个例子中可以看出,参数在放在不同的位置处,得到的响应是不同的,所以在日常中需要确定好请求参数发送的方式(当然现在将请求参数放在URL中的发送方式很少,几乎没有,反正在正式中我还没遇到过)

    2、在发送请求时,我们最好在headers部分加上服务器接收的数据类型,如:以application/x-www-form-urlencoded形式发送参数时,在headers中增加Content-Type: application/x-www-form-urlencoded键值对

    3、各种形式发送参数请求的差异

    body类型区别
    form-data 就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。但Postman目前尚不支持上传多个文件
    x-www-form-urlencoded就是application/x-www-from-urlencoded,会将表单内的数据转换为键值对
    raw 可以上传任意格式的文本,可以上传text、json、xml、html等
    binary 相当于Content-Type:application/octet-stream,从字面意思得知,只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件

     

    PUT请求

    HTTP PUT请求方法类似于HTTP POST。同样是将数据传输到服务器(并引发响应)。返回的数据取决于服务器的实现。用Postman构建请求及收到的响应如下

    例3:

     

    PATCH请求

    HTTP PATCH请求方法用于在服务器上更新资源。一般来说,PATCH请求支持URI拼接传递参数,也支持在请求体中以form-data的形式传递参数

    例4:URI拼接传递参数

    例4_1:请求体传递参数

    DELETE请求

    HTTP DELETE请求方法用于在服务器上删除资源。一般来说,DELETE请求支持URI拼接传递参数,也支持在请求体中以form-data的形式传递参数

    例5:请求体传递参数

    例5_1:URI拼接传递参数

    Headers

    请求头(Request Headers)是请求报文特有的,它为服务器提供了一些额外信息。例如,客户端希望接收什么类型的数据

    例6:使用F12可抓取请求详情

    例6_1:发送带headers的请求


    例6_2:使用postman查看响应信息头

    认证方法

    概述

    1、Authorization是验证是否拥有从服务器访问所需数据的权限当发送请求时,通常必须包含参数,以确保请求具有访问和返回所需数据的权限。Postman提供了授权类型,可以轻松地在Postman本地应用程序中处理身份验证协议。

    2、Postman不会保存授权请求头数据和请求参数,以防止公开的敏感数据暴露,如API密钥。如果想检查Postman生成的授权请求头和参数,可以单击预览请求按钮"Preview Request"
        

    基本认证

    1、使用postman来构建基本认证(Basic Auth)权限认证请求,当传递正确的用户名和密码时,将返回一个"200OK"的状态码;如果不传递密码或密码错误时,将返回一个"401 Unauthorized"

    2、基本身份验证是一种比较简单的授权类型,需要经过验证的用户名和密码才能访问数据资源。这就需要我们输入正确的用户名和对应的密码

    Hawk Authentication认证

    1、hawk是一个HTTP认证方案,使用MAC(Message Authentication Code,消息认证码算法)算法,它提供了对请求进行部分加密验证的认证HTTP请求的方法,包括HTTP方法、请求URI和主机

    2、hawk方案要求提供一个共享对称密匙在服务器与客户端之间,通常这个共享的凭证在初始TLS保护阶段建立的,或者是从客户端和服务器都可用的其他一些共享机密信息中获得的

    Digest Auth认证

    1、在“Digest Auth”流程中,客户端向服务器发送请求,服务器返回客户端的nonce和realm值;客户端对用户名、密码、nonce值、HTTP请求方法、被请求资源URI等组合后进行MD5运算,把计算得到的摘要信息发送给服务端。服务器然后发回客户端请求的数据。

    2、的好处就是不必把具备密码的信息对外传输,只需将这些密码信息加入一个对方给定的随机值计算哈希值,最后将哈希值传给对方,对方就可以认证你的身份。

    3、Digest模式避免了密码在网络上明文传输,提高了安全性,但它仍然存在缺点,例如认证报文被攻击者拦截到攻击者可以获取到资源

    OAuth 1.0

    OAuth 1.0是一个开放标准,它不需要将用户名和密码提供给第三方应用,就允许用户让第三方应用访问该用户在某一网站上储存的秘密资源

    Bearer Token

    “Bearer Token”是一个安全令牌。任何用户都可以使用它来访问数据资源,而无需使用加密密钥

    拓展:使用postman和requests模块登录豆瓣

    Postman模拟登陆

    步骤1:踩点(目标URL、服务器接收的数据类型、提交的表单数据)

    步骤2:构造请求

    Requests模块请求

    import requests
    
    url = "https://accounts.douban.com/j/mobile/login/basic"
    data = {"ck":"","remember":"false","name":"18380******","password":"zh18380********","ticket":""}
    device_headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
                                        "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36 "}
    
    response = requests.post(url=url,data=data,headers=device_headers)
    result = response.json()
    print(type(result))
    
    
    print(result)
    print(result["description"])


     

    展开全文
  • HTTP请求方式中8种请求方法(简单介绍)

    万次阅读 多人点赞 2018-08-10 13:51:00
    HTTP请求方式中8种请求方法(简单介绍) 简单介绍 HTTP是超文本传输协议,其定义了客户端与服务器端之间文本传输的规范。HTTP默认使用80端口,这个端口指的是服务端的端口,而客户端使用的端口是...

    HTTP请求方式中8种请求方法(简单介绍)

    简单介绍

    HTTP是超文本传输协议,其定义了客户端与服务器端之间文本传输的规范。HTTP默认使用80端口,这个端口指的是服务端的端口,而客户端使用的端口是动态分配的。当我们没有指定端口访问时,浏览器会默认帮我们添加80端口。我们也可以自己指定访问端口如:http://www.ip138.com:80。 需要注意的是,现在大多数访问都使用了HTTPS协议,而HTTPS的默认端口为443,如果使用80端口访问HTTPS协议的服务器可能会被拒绝。

     

    HTTP请求的方法:

    HTTP/1.1协议中共定义了八种方法(有时也叫“动作”),来表明Request-URL指定的资源不同的操作方式

    HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。

    HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法

     

    1、OPTIONS
    返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性
    2、HEAD
    向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。
    3、GET
    向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在Web Application中,其中一个原因是GET可能会被网络蜘蛛等随意访问。Loadrunner中对应get请求函数:web_link和web_url
    4、POST
    向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form
    5、PUT
    向指定资源位置上传其最新内容
    6、DELETE
    请求服务器删除Request-URL所标识的资源
    7、TRACE
    回显服务器收到的请求,主要用于测试或诊断
    8、CONNECT
    HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
    注意:
    1)方法名称是区分大小写的,当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Mothod Not Allowed);当服务器不认识或者不支持对应的请求方法时,应返回状态码501(Not Implemented)。
    2)HTTP服务器至少应该实现GET和HEAD/POST方法,其他方法都是可选的,此外除上述方法,特定的HTTP服务器支持扩展自定义的方法。

    HTTP工作原理

    HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

     HTTP 请求/响应的步骤:

    客户端连接到Web服务器->发送Http请求->服务器接受请求并返回HTTP响应->释放连接TCP连接->客户端浏览器解析HTML内容

    1、客户端连接到Web服务器

    一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.baidu.com

    2、发送HTTP请求

    通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。

    3、服务器接受请求并返回HTTP响应

    Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。

    4、释放连接TCP连接

    若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

    5、客户端浏览器解析HTML内容

    客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

    HTTP请求消息Request

    客户端发送一个HTTP请求到服务器的请求消息包括以下格式

    请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。

    请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本
    Get请求例子,使用Charles抓取的request:
    GET /562f25980001b1b106000338.jpg HTTP/1.1
    Host    img.mukewang.com
    User-Agent    Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 Accept image/webp,image/*,*/*;q=0.8 Referer http://www.imooc.com/ Accept-Encoding gzip, deflate, sdch Accept-Language zh-CN,zh;q=0.8
    第一部分:请求行,用来说明请求类型,要访问的资源以及所使用的HTTP版本.

    GET说明请求类型为GET,[/562f25980001b1b106000338.jpg]为要访问的资源,该行的最后一部分说明使用的是HTTP1.1版本。

    第二部分:请求头部,紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息

    从第二行起为请求头部,HOST将指出请求的目的地.User-Agent,服务器端和客户端脚本都能访问它,它是浏览器类型检测逻辑的重要基础.该信息由你的浏览器来定义,并且在每个请求中自动发送等等

    第三部分:空行,请求头部后面的空行是必须的

    即使第四部分的请求数据为空,也必须有空行。

    第四部分:请求数据也叫主体,可以添加任意的其他数据。

    这个例子的请求数据为空。

    POST请求例子,使用Charles抓取的request:
    POST / HTTP1.1
    Host:www.wrox.com
    User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022) Content-Type:application/x-www-form-urlencoded Content-Length:40 Connection: Keep-Alive name=Professional%20Ajax&publisher=Wiley

    第一部分:请求行,第一行明了是post请求,以及http1.1版本。
    第二部分:请求头部,第二行至第六行。
    第三部分:空行,第七行的空行。
    第四部分:请求数据,第八行。

    HTTP请求消息Response

    一般情况下,服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。

    HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文

     

    例子

    HTTP/1.1 200 OK
    Date: Fri, 22 May 2009 06:07:21 GMT
    Content-Type: text/html; charset=UTF-8
    
    <html>
          <head></head> <body> <!--body goes here--> </body> </html>
    第一部分:状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。

    第一行为状态行,(HTTP/1.1)表明HTTP版本为1.1版本,状态码为200,状态消息为(ok)

    第二部分:消息报头,用来说明客户端要使用的一些附加信息

    第二行和第三行为消息报头,
    Date:生成响应的日期和时间;Content-Type:指定了MIME类型的HTML(text/html),编码类型是UTF-8

    第三部分:空行,消息报头后面的空行是必须的
    第四部分:响应正文,服务器返回给客户端的文本信息。

    空行后面的html部分为响应正文。

    请求返回状态码:

    200 OK  当您的操作将在响应正文中返回数据时,出现此结果。

    204 No Content 当您的操作成功,但不在响应正文中返回数据时,出现此结果。

    304 Not Modified(重定向)  当测试实体自上次检索以来是否被修改时,出现此结果。

    403 Forbidden   客户端错误

    401 Unauthorized 客户端错误

    413 Payload Too Large(客户端错误) 当请求长度过长时,出现此结果。

    400 BadRequest(客户端错误) 当参数无效时,出现此结果。

    404 Not Found(客户端错误) 当资源不存在时,出现此结果。

    405 Method Not Allowed(客户端错误)由于方法和资源组合不正确而出现此错误。 例如,您不能对一个实体集合使用 DELETE 或 PATCH。

    412 Precondition Failed  客户端错误

    501 Not Implemented(服务器错误) 当未实施某个请求的操作时,出现此结果。

    503 Service Unavailable(服务器错误) 当 Web API 服务不可用时,出现此结果。

    GET与POST:

     “get”方法提交的数据会直接填充在请求报文的URL上,如“ https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1 ”   “?”问号划分域名和get提交的参数,A=B中的A是参数名,B是参数值,多个参数之间用&进行分割,如果参数值是中文,则会转换成诸如%ab%12加密16进制码。一般来说,浏览器处理的URL最大限度长度为1024B(不同浏览器不一样),所以GET方法提交参数长度有限制。

            “post”方法提交的数据会附在正文上,一般请求正文的长度是没有限制的,但表单中所能处理的长度一般为100k(不同协议不同浏览器不一样),而且需要考虑下层报文的传输效率,不推荐过长。

            所以GET方法可以用来传输一些可以公开的参数信息,解析也比较方便,如百度的搜索的关键词,而POST方法可以用来提交一个用户的敏感信息(如果不使用HTTPS加密,报文正文仍旧是明文,容易被人截获读取)

    主要特点

    1、无连接

    无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

    2、无状态

    HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

     3、简单快速

    客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

    4、灵活

    HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

    5、支持B/S及C/S模式

     

     

    作业:

    了解 HTTP 协议的基本知识,包括请求流程、请求方法等

      http是超文本传输协议,默认端口号为80,客户端是动态的,浏览器会自动默认为80

      https默认端口号为443

      请求方法8种

      get、post、put、delete、options、trace、connect、head

      请求流程2种分为request和response,但是他们的流程都是相同的,一个请求一个接收

      流程为:状态行、消息报头、空行和响应正文

      请求响应步骤:

      客户端连接到Web服务器->发送Http请求->服务器接受请求并返回HTTP响应->释放连接TCP连接->客户端浏览器解析HTML内容

       

     

    posted @ 2018-08-10 13:51 韦邦杠 阅读( ...) 评论( ...) 编辑 收藏
    展开全文
  • curl发送不同的请求方法

    千次阅读 2020-03-13 18:03:30
    测试中需要抓取http不同请求方法的包,get、post这类常见的方法随便访问网页就可以。 但如何发送http的其他请求方法呢,HEAD、OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 查询资料发现可以用curl实现 HTTP ...
  • 请求方法之Option

    千次阅读 2019-02-26 18:10:09
    除了常用的GET、POST请求方法以外还有一个请求方法是经常遇到的,那就是OPTION预检请求 OPTION用来查询针对请求URI指定的资源支持的方法。 简单来说就是发送 OPTION请求询问服务器,你支持哪种请求方法啊? 支持GET...
  • HTTP请求方法

    千次阅读 2021-12-24 16:37:12
    文章目录一、什么是 HTTP?二、常用HTTP 方法-GET 方法-POST 方法-PUT 方法-HEAD 方法-DELETE 方法-OPTIONS 方法三、比较 GET 与 POST 一、什么是 HTTP? 看这篇文章的人应该对http都有一定的了解,这里就一笔带过...
  • 这个接口自动化测试框架到目前为止,我们已经完成了Get请求的封装和必要的工具类的支持。...所以,这个Java接口自动化测试框架的核心就是Get和POST请求方法的封装过程。 1.POST接口举例浏览器打开https://re...
  • uniapp封装请求方法(含请求期间的Loading样式)一、封装步骤二、封装思路解析 一、封装步骤 1. 在项目的根目录创建目录结构如下: 封装的请求方法代码如下: // 全局请求路径,也就是后端的请求基准路径 const ...
  • HTTP规范中定义了一组常用的请求方法。比如, GET方法负责从服务器获取一个 文档, POST方法会向服务器发送需要处理的数据, OPTIONS方法用于确定Web 服务器的一般功能, 或者Web服务器处理特定资源的能力。 HTTP...
  • 由patch请求方法引发的一些总结

    万次阅读 2018-08-21 18:07:19
    patch方法用来更新局部资源,这句话我们该如何理解? 假设我们有一个UserInfo,里面有userId, userName, userGender等10个字段。可你的编辑功能因为需求,在某个特别的页面里只能修改userName,这时候的更新怎么...
  • REST的请求方法有哪些,有什么区别?】 这里是修真院前端小课堂,每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析前端知识...
  • 1.uni-app request请求 uni.request({ url: 'http://localhost/myUniApp/php/login.php', //仅为示例,并非真实接口地址。 data: {//参数 rawData: rawData, code: loginRes.code }, header:...
  • SpringMVC@RequestMapping请求方法限定与请求参数限定 一.请求方法限定 除了可以对url进行设置,还可以限定请求进来的方法 限定GET方法 @RequestMapping(method = RequestMethod.GET) 如果通过POST访问则...
  • HTTP请求方法详解

    万次阅读 2016-04-27 12:39:47
    HTTP请求方法并不是只有GET和POST,只是最常用的。据RFC2616标准(现行的HTTP/1.1)得知,通常有以下8种方法:OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE和CONNECT。这8种我们一起来分析一下,其中最常用的也...
  • http 几种请求方法的差别

    万次阅读 多人点赞 2016-09-19 14:45:22
    在其中有8个不同的请求方法: GETPOSTHEADPUTDELETEOPTIONSTRACECONNECT 这8个方法中GET和POST最常见。 1. GET方法 [plain] view plain copy 它本质就是发送一个请求来取得服务器上的某一资源...
  • Axios请求方法及别名(delete方法)

    万次阅读 多人点赞 2019-09-05 14:57:05
    <template> <div class="axios">... axios请求方法: get,post,put,patch,delete get:获取数据 post:提交数据(表单提交+文件上传) put:更新数据(所有数据推送到后端) patch:更新...
  • GET请求请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。URL的编码格式采用的是ASCII编码,而不是uniclde,即是说所有的非ASCII字符都要编码之后再传输。 POST请求:POST请求会把请求的...
  • HTTP的请求方法OPTIONS

    万次阅读 2017-10-28 10:39:56
    HTTP请求方法并不是只有GET和POST,只是最常用的。据RFC2616标准(现行的HTTP/1.1)得知,通常有以下8种方法:OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE和CONNECT。 HTTP请求方法并不是只有GET和POST,只是最...
  • HTTP协议以及HTTP请求中8种请求方法

    万次阅读 2017-11-29 23:01:14
    HTTP协议以及HTTP请求中8种请求方法 什么是协议?  协议,是指通信的双方,在通信流程或内容格式上,共同遵守的标准。 什么是http协议?  http协议,是互联网中最常见的网络通信标准。 http协议的...
  • 对于 XHR 而言,传入 open() 方法的 URL 末尾的查询字符串必须使用encodeURIComponent() 进行编码。 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。 POST请求可能会导致新的资源的建立和/或已...
  • 小程序写完也一段时间了,最近分享下装逼的技能吧,封装请求方法,不但高大上,而且使用简单。先说说小程序自带的请求吧! wx.request(OBJECT) 参数: 参数名 类型 必填 默认值 说明 url String ...
  • postman之post请求方法讲解

    千次阅读 2021-05-19 15:13:35
    在postman中通过post方式请求需要关注的四要素包含:请求地址(url)+请求方法(post)+请求头域(Headers)+参数 请求地址的组成:http(协议类型)+服务器地址(域名)+接口地址(存放文件路径)+请求参数(手动在...
  • 常用的HTTP请求方法

    千次阅读 2019-07-15 17:20:53
    前端日常发送HTTP请求一般只用到GET, POST两种方法,如果是在一个符合RESTful设计规范的应用中,常用到5个方法。 PS: RESTful设计规范是前后端接口设计的一种规范,遵从了这一规范,可以大大节约沟通的成本,RESTful...
  • HTTP请求方法 之 HEAD

    千次阅读 2016-09-23 11:11:44
    HTTP请求方法并不是只有GET和POST,只是最常用的。据RFC2616标准(现行的HTTP/1.1)得知,通常有以下8种方法:OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE和CONNECT。 官方定义 HEAD方法跟GET方法
  • HTTP请求方法OPTIONS预检请求

    千次阅读 2020-01-16 19:12:44
    浏览器对复杂跨域请求在真正发送请求之前,会先进行一次预请求,就是参数为OPTIONS的第一次请求,他的作用是用于试探性的服务器响应是否正确,即是否能接受真正的请求,如果在options请求之后获取到的响应是拒绝性质的,...
  • 精讲RestTemplate-POST请求方法使用详解

    千次阅读 2020-11-02 17:32:18
    其实POST请求方法和GET请求方法上大同小异,RestTemplate的POST请求也包含两个主要方法: postForObject() postForEntity() 二者的主要区别在于,postForObject()返回值是HTTP协议的响应体。postForEntity()返回...
  • okhttp 同步/异步 请求方法

    千次阅读 2020-02-11 21:36:51
    okhttp同步请求 请求步骤 1. 创建一个OkHttpClient类。代表着OKHttp请求的一个客户端类,在整个okhttp库中,这个OkHttpClient类是处于一个很核心的地位。很多功能需要通过这个客户端类进行转发,或者直接由这个...
  • flask框架是轻量级的框架,只有核心,如果需要扩展其他功能需要自己去安转调用其他库,而django像是把功能都装好了,直接使用就行,不需要为了扩展功能在重新的写代码,这章文章主要讲flask框架的方法 我这里会按照...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,781,860
精华内容 1,112,744
关键字:

请求方法