• HTTP的请求方式有哪些?



    HTTP的请求方式

    在这里插入图片描述

    在 HTTP/1.1 中提供了一系列方法以便我们向服务器发送不同类型的请求,需要注意的是这些方法名称都是区分大小写的,而且必需使用大写字母。具体的方法名称和说明如下表所示:

    方法名称方法说明
    GETGET 方法用于根据 URI 参数从服务器中获取数据,是最常用的请求方法之一
    HEADHEAD 方法与 GET 方法类似,但服务器在响应时只返回响应行和响应头,不会返回响应体
    POSTPOST 请求用于将数据发送到服务器。例如使用 HTML 表单上传文件或提交客户信息等
    PUTPUT 方法可以向服务器中写入文档,有点类似于使用 FTP 上传文件
    DELETEDELETE 方法用于删除 URI 所指定的目标资源,与 PUT 方法正好相反
    CONNECTCONNECT 方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行 TCP 通信
    OPTIONSOPTIONS 方法用来查询目标资源所在服务器支持的 HTTP 方法
    TRACETRACE 方法可以让服务器端将收到的请求返回给客户端,主要用于开发阶段的测试和诊断

    1. GET方法

    GET 方法可以根据请求行中 URL 部分的参数从服务器中获取数据。例如我们在浏览器中打开一个连接,然后就会在浏览器看到相应的页面,这一过程就是通过 GET 方法实现的。另外,使用 GET 方法还可以在 URL 参数中携带一些字符串类型的参数一同传输给服务器,由于是在 URL 中携带的参数,我们可以在浏览器的地址栏直观的看到,所以安全性较低,一般只用来传递一些没有风险的数据。而且 GET 方法对于所传输数据的大小也有限制,一般不能超过 2kb。

    以访问 http://www.csdn.net/hello.html 这个页面为例,客户端使用 GET 方法发起的 HTTP 请求如下所示:

    GET /hello.html HTTP/1.1
    Host: www.csdn.net
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
    Connection: keep-alive
    Pragma: no-cache
    Cache-Control: no-cache
    Upgrade-Insecure-Requests: 1
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    Accept-Encoding: gzip, deflate
    Accept-Language: zh-CN,zh;q=0.9
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    针对上面的请求,服务器的响应如下所示:

    HTTP/1.1 200 OK
    Server: Tengine
    Last-Modified: Thu, 17 Sep 2020 13:07:28 GMT
    ETag: "34aa387-d-1568eb00"
    Vary: Authorization,Accept
    Date: Thu, 17 Sep 2020 13:32:54 GMT
    Accept-Ranges: bytes
    Content-Length: 68
    Content-Type: text/html
    Connection: Closed
    
    DOCTYPE html>
    <html>
    <body>
    <h1>Hello,CSDN!h1>
    body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    2. HEAD方法

    HEAD 方法在功能上与 GET 方法相似,不同之处在于使用 HEAD 方法服务器只会返回响应行和响应头,不会返回响应体。同样以访问 http://c.biancheng.net/hello.html 这个页面为例,客户端使用 HEAD 方法发起的 HTTP 请求如下所示:

    HEAD /hello.html HTTP/1.1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
    Host: www.csdn.net
    Accept-Language: zh-CN,zh;q=0.9
    Accept-Encoding: gzip, deflate
    Connection: Keep-Alive
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    针对 HEAD 方法发起的请求,服务器的响应如下所示:

    HTTP/1.1 200 OK
    Server: Tengine
    Last-Modified: Thu, 17 Sep 2020 13:07:28 GMT
    ETag: "34aa387-d-1568eb00"
    Vary: Authorization,Accept
    Date: Thu, 17 Sep 2020 13:32:54 GMT
    Accept-Ranges: bytes
    Content-Length: 0
    Content-Type: text/html
    Connection: Closed
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    通过服务器的响应结果可以看出,服务器在返回了响应行和响应头之后,并没有返回响应体。


    3. POST方法

    当我们需要将一些信息发送给服务器的时候就需要用到 POST 方法了,比如在提交表单或者上传文件的时候。与 GET 方法不同,POST 方法会将返送给服务器的信息放到请求体中,所以比 GET 方法更加安全。而且,POST 方法对于传输数据的大小和类型也没有限制。以提交表单为例,使用 POST 方法向服务器发起的 HTTP 请求如下所示:

    POST /login.php HTTP/1.1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
    Host: c.biancheng.net
    Content-Type: text/xml; charset=utf-8
    Content-Length: 40
    Accept-Language: zh-CN,zh;q=0.9
    Accept-Encoding: gzip, deflate
    Connection: Keep-Alive
    
    username=www.csdn.net&password=123456
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    上面的请求发送成功后,服务器端的脚本 login.php 会根据传递的数据做出相应的处理,并对客户端做出响应,响应结果如下所示:

    HTTP/1.1 200 OK
    Date: Thu, 17 Sep 2020 13:32:54 GMT
    Server: Tengine
    Last-Modified: Thu, 17 Sep 2020 13:07:28 GMT
    ETag: "34aa387-d-1568eb00"
    Vary: Authorization,Accept
    Accept-Ranges: bytes
    Content-Length: 51
    Content-Type: text/html
    Connection: Closed
    
    <html>
    <body>
    <h1>登陆成功h1>
    body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    4. PUT方法

    使用 PUT 方法将数据传输到服务器,并将其存储在 URL 所指定的位置。假如我们要将 hello.html 文件的内容存储到服务器的根目录下,那么客户端发送的 HTTP 请求应该是下面这样的:

    PUT /hello.html HTTP/1.1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
    Host: www.csdn.net
    Accept-Language: zh-CN,zh;q=0.9
    Connection: Keep-Alive
    Content-type: text/html
    Content-Length: 182
    
    <html>
    <body>
    <h1>Hello,CSDN!h1>
    body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    这时服务器会在根目录下创建 hello.html 文件,并将请求中传输的数据保存到这个文件中,执行成功后会向客户端做出如下所示的响应:

    HTTP/1.1 201 Created
    Date: Thu, 17 Sep 2020 13:32:54 GMT
    Server: Tengine
    Content-type: text/html
    Content-length: 30
    Connection: Closed
    
    <html>
    <body>
    <h1>The file was created.h1>
    body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    5. DELETE方法

    DELETE 方法可以请求服务器删除 URL 所指定的文件。假如要删除上面操作中在服务器根目录创建的 hello.htnl 文件,那么客户端的请求应该是下面这样的:

    DELETE /hello.html HTTP/1.1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
    Host: www.csdn.net
    Accept-Language: zh-CN,zh;q=0.9
    Connection: Keep-Alive
    
    • 1
    • 2
    • 3
    • 4
    • 5

    服务器在收到上面的请求后,会删除根目录下的 hello.html 文件,并对客户端做出如下响应:

    HTTP/1.1 200 OK
    Date: Thu, 17 Sep 2020 13:32:54 GMT
    Server: Tengine
    Content-type: text/html
    Content-length: 30
    Connection: Closed
    
    <html>
    <body>
    <h1>URL deleted.h1>
    body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    6. CONNECT方法

    客户端使用 CONNECT 方法可以与 URL 所指向的目标服务器建立 HTTP 连接。假如要与域名(c.biancheng.net)所指向的服务器建立连接,客户端的请求如下所示:

    CONNECT www.csdn.net HTTP/1.1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
    
    • 1
    • 2

    连接建立成功后,服务器会对客户端做出如下响应:

    HTTP/1.1 200 Connection established
    Date: Thu, 17 Sep 2020 13:32:54 GMT
    Server: Tengine
    
    • 1
    • 2
    • 3

    7. OPTIONS方法

    当我们要使用本节中介绍的某个方法向服务器发送请求,但又不确定服务器是否支持此请求时,可以使用 OPTIONS 方法来查看服务器所支持的 HTTP 方法。在使用 OPTIONS 方法发送 HTTP 请求时,既可以指定具体的 URL,也可以使用星号(*)来代表整个服务器。假如要查看域名(c.biancheng.net)所指向服务器所支持的 HTTP 方法,客户端的请求如下所示:

    OPTIONS * HTTP/1.1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
    
    • 1
    • 2

    服务器的响应如下所示:

    HTTP/1.1 200 OK
    Date: Thu, 17 Sep 2020 13:32:54 GMT
    Server: Tengine
    Allow: GET,HEAD,POST,OPTIONS,TRACE
    Content-Type: httpd/unix-directory
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在服务器返回的响应头中,Allow 一行就是该服务器支持的所有 HTTP 方法。


    8. TRACE方法

    服务器在收到客户端使用 TRACE 方法发送的 HTTP 请求时,会将收到的请求报文放到响应体中返回给客户端。TRACE 方法主要在程序的开发测试阶段使用,使用 TRACE 方法可以查看请求在传递到服务器的过程中是否被篡改或破坏等等。客户端的请求示例如下所示:

    TRACE / HTTP/1.1
    Host: www.csdn.net
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
    
    • 1
    • 2
    • 3

    服务器的响应如下所示:

    HTTP/1.1 200 OK
    Date: Thu, 17 Sep 2020 13:32:54 GMT
    Server: Tengine
    Connection: close
    Content-Type: message/http
    Content-Length: 166
    
    TRACE / HTTP/1.1
    Host: www.csdn.net
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

  • 相关阅读:
    Win11如何开启移动中心页面的操作方法教学
    mysql caching_sha_password
    100 Gbps 网卡的 TCP 困境
    牛客小白月赛79
    基于毫米波雷达的手势识别算法
    java继承
    ReactNative学习笔记
    Codeforces Round 905 (Div. 3)ABCDEF
    ndarray、dtype——数据分析(一)
    【备忘】清理Office缓存
  • 原文地址:https://blog.csdn.net/m0_62617719/article/details/128209000