美文网首页
http的8种请求

http的8种请求

作者: Zhou_qn | 来源:发表于2020-03-21 21:55 被阅读0次

    参考文章:
    https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Methods

    1、options

    返回服务器针对特定资源所支持的HTTP方法或向web服务器发送*测试服务器功能(允许客户端查看服务器性能)

    用来描述了目标资源的通信选项,会返回服务器支持预定义URL的HTTP策略。

    • 检测服务器所支持的请求方法

    可以使用 OPTIONS 方法对服务器发起请求,以检测服务器支持哪些 HTTP 方法:

    curl -X OPTIONS http://example.org -i
    

    响应报文包含一个 Allow首部字段,该字段的值表明了服务器支持的所有 HTTP 方法:

    HTTP/1.1 200 OK
    Allow: OPTIONS, GET, HEAD, POST
    Cache-Control: max-age=604800
    Date: Thu, 13 Oct 2016 11:45:00 GMT
    Expires: Thu, 20 Oct 2016 11:45:00 GMT
    Server: EOS (lax004/2813)
    x-ec-custom-error: 1
    Content-Length: 0
    
    • CORS 中的预检请求

    在 CORS中,可以使用 OPTIONS 方法发起一个预检请求,以检测实际请求是否可以被服务器所接受。预检请求报文中的 Access-Control-Request-Method 首部字段告知服务器实际请求所使用的 HTTP 方法Access-Control-Request-Headers首部字段告知服务器实际请求所携带的自定义首部字段。服务器基于从预检请求获得的信息来判断,是否接受接下来的实际请求。

    OPTIONS /resources/post-here/ HTTP/1.1 
    Host: bar.other 
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
    Accept-Language: en-us,en;q=0.5 
    Accept-Encoding: gzip,deflate 
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
    Connection: keep-alive 
    Origin: http://foo.example 
    Access-Control-Request-Method: POST 
    Access-Control-Request-Headers: X-PINGOTHER, Content-Type
    

    服务器所返回的 Access-Control-Allow-Methods首部字段将所有允许的请求方法告知客户端。该首部字段与 Allow类似,但只能用于涉及到 CORS 的场景中。

    HTTP/1.1 200 OK
    Date: Mon, 01 Dec 2008 01:15:39 GMT 
    Server: Apache/2.0.61 (Unix) 
    Access-Control-Allow-Origin: http://foo.example 
    Access-Control-Allow-Methods: POST, GET, OPTIONS 
    Access-Control-Allow-Headers: X-PINGOTHER, Content-Type 
    Access-Control-Max-Age: 86400 
    Vary: Accept-Encoding, Origin 
    Content-Encoding: gzip 
    Content-Length: 0 
    Keep-Alive: timeout=2, max=100 
    Connection: Keep-Alive 
    Content-Type: text/plain
    

    2、Get

    GET 方法请求指定的资源(请求指定页面信息,并返回实体主体)。使用 GET 的请求应该只用于获取数据,并且不应对数据产生其他影响。。

    • 说明:GET请求是可以缓存的,我们可以从浏览器历史记录中查找到GET请求,还可以把它收藏到书签中;且GET请求有长度限制,仅用于请求数据(不修改)。

    • 注:因GET请求的不安全性,在处理敏感数据时,绝不可以使用GET请求。

    3、Post

    Post方法向指定资源提交数据进行处理请求(提交表单、上传文件),又可能导致新的资源的建立或原有资源的修改,POST 方法发送数据给服务器. 请求主体的类型由 Content-Type首部指定.

    • application/x-www-form-urlencoded: 数据被编码成以 '&' 分隔的键-值对, 同时以 '=' 分隔键和值. 非字母或数字的字符会被 percent-encoding: 这也就是为什么这种类型不支持二进制数据(应使用 multipart/form-data 代替).
    • multipart/form-data
    • text/plain
    • 说明:POST请求永远不会被缓存,且对数据长度没有限制;我们无法从浏览器历史记录中查找到POST请求。

    4、Put

    PUT 请求方法使用请求中的负载创建或者替换目标资源。

    用于将数据发送到服务器以创建或更新资源,它可以用上传的内容替换目标资源中的所有当前内容。(从客户端向服务器传送的数据取代指定文档的内容)
    它会将包含的元素放在所提供的URL下,如果URL指示的是当前资源,则会被改变。如果URL未指示当前资源,则服务器可以使用该URL创建资源。

    PUTPOST方法的区别在于,PUT方法是幂等的:调用一次与连续调用多次是等价的(即没有副作用),而连续调用多次POST方法可能会有副作用,比如将一个订单重复提交多次。

    5、Head

    HEAD就像GET,只不过服务端接受到HEAD请求后只返回响应头,而不会发送响应内容。当我们只需要查看某个页面的状态的时候,使用HEAD是非常高效的,因为在传输的过程中省去了页面内容。

    • 请求方法的一个使用场景是在下载一个大文件前先获取其大小再决定是否要下载, 以此可以节约带宽资源.
      HEAD 方法的响应不应包含响应正文. 即使包含了正文也必须忽略掉. 虽然描述正文信息的 entity headers 例如 Content-Length 可能会包含在响应中, 但它们并不是用来描述 HEAD 响应本身的, 而是用来描述同样情况下的 GET请求应该返回的响应.

    6、Delete

    Delete方法用来删除指定的资源,它会删除URL给出的目标资源页面。

    7、Trace

    TRACE 方法实现沿通向目标资源的路径的消息环回(loop-back)测试 ,提供了一种实用的 debug 机制。(回显服务器收到的请求,主要用于测试和诊断)

    请求的最终接收者应当原样反射(reflect)它接收到的消息,除了以下字段部分,作为一个Content-Typemessage/http 的200(OK)响应的消息的主体(body)返回给客户端 。
    最终接收者是指初始(origin)服务器,或者第一个接收到 Max-Forwards 值为 0的请求的服务器。

    8、Connect

    CONNECT 方法可以开启一个客户端与所请求资源之间的双向沟通的通道。它可以用来创建隧道(tunnel)。它通过简单的TCP/IP隧道更改请求连接,通常是使用解码的HTTP代理来进行SSL编码的通信(HTTPS)。

    CONNECT 可以用来访问采用了 SSL (HTTPS) 协议的站点。客户端要求代理服务器将 TCP 连接作为通往目的主机隧道。之后该服务器会代替客户端与目的主机建立连接。连接建立好之后,代理服务器会面向客户端发送或接收 TCP 消息流。

    post和get总结:

    get 和 post区别:

    1.消息体与携带数据:

    • get请求无消息体,只能携带少量数据(提交的数据最多只能有1024字节)

    • post请求有消息体,可以携带大量数据(没有此限制)

    2.携带数据的方式:

    • get请求将数据放在url地址中

    • post请求将数据放在消息体中

    3.请求数据位置

    • get请求提交的数据放置在HTTP请求协议头中

    • post提交的数据则放在实体数据中;

    可以说,GET是从服务器上获取数据,POST是向服务器传送数据

    相关文章

      网友评论

          本文标题:http的8种请求

          本文链接:https://www.haomeiwen.com/subject/pctuyhtx.html