HTTP请求和响应协议

一、HTTP的请求协议(B --> S)

  • HTTP的请求协议包括:

    • 请求行

    • 请求头

    • 空白行

    • 请求体

  • HTTP请求协议的具体报文:GET请求

    GET /servlet05/getServlet?username=lucy&userpwd=1111 HTTP/1.1       请求行(请求方式、URI、HTTP协议版本号)
    Host: localhost:8080                                                请求头(请求的主机、主机的端口、浏览器、平台、cookie等信息)
    Connection: keep-alive
    sec-ch-ua: "Google Chrome";v="95", "Chromium";v="95", ";Not A Brand";v="99"
    sec-ch-ua-mobile: ?0
    sec-ch-ua-platform: "Windows"
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    Sec-Fetch-Site: same-origin
    Sec-Fetch-Mode: navigate
    Sec-Fetch-User: ?1
    Sec-Fetch-Dest: document
    Referer: http://localhost:8080/servlet05/index.html
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9
                                                                         空白行(区分“请求头”和“请求体”)
                                                                         请求体(向服务器发送的具体数据)
  • HTTP请求协议的具体报文:POST请求

    POST /servlet05/postServlet HTTP/1.1                        请求行(请求方式、URI、HTTP协议版本号)
    Host: localhost:8080                                        请求头(请求的主机、主机的端口、浏览器、平台、cookie等信息)
    Connection: keep-alive
    Content-Length: 25
    Cache-Control: max-age=0
    sec-ch-ua: "Google Chrome";v="95", "Chromium";v="95", ";Not A Brand";v="99"
    sec-ch-ua-mobile: ?0
    sec-ch-ua-platform: "Windows"
    Upgrade-Insecure-Requests: 1
    Origin: http://localhost:8080
    Content-Type: application/x-www-form-urlencoded
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    Sec-Fetch-Site: same-origin
    Sec-Fetch-Mode: navigate
    Sec-Fetch-User: ?1
    Sec-Fetch-Dest: document
    Referer: http://localhost:8080/servlet05/index.html
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9
                                                                 空白行(区分“请求头”和“请求体”)
    username=lisi&userpwd=123                                    请求体(向服务器发送的具体数据)

二、HTTP的响应协议(S --> B)

  • HTTP的响应协议包括:
    • 响应体

    • 空白行

    • 响应头

    • 状态行

    • HTTP响应协议的具体报文:

      HTTP/1.1 200 ok                            状态行(协议版本号、状态码、状态的描述信息)
      Content-Type: text/html;charset=UTF-8      响应头(响应的内容类型、内容长度、时间等)
      Content-Length: 160
      Date: Mon, 08 Nov 2021 13:19:32 GMT
      Keep-Alive: timeout=20
      Connection: keep-alive
                                                 空白行(分隔“响应头”和“响应体”)
      <!doctype html>                            响应体(响应的正文,字符串形式,这个字符串被浏览器渲染解释并执行,最终展示出效果)
      <html>
          <head>
              <title>from get servlet</title>
          </head>
          <body>
              <h1>from get servlet</h1>
          </body>
      </html>

三、GET请求和POST请求:

  1. POST请求:使用form表单且form标签中的method属性值为:method="post"
  2. GET请求:​​​​​​​
    1. 在浏览器地址栏上直接输入URL,敲回车
    2. 在浏览器上直接点击超链接
    3. 使用form表单提交数据时,form标签中没有写method属性,默认就是GET
    4. 使用form表单的时候,form标签中method属性值为:method="get"
  3. GET请求和POST请求区别:​​​​​​​
    1. GET请求发送数据的时候,数据会挂在URI的后面,数据回显在浏览器的地址栏上。(GET请求在“请求行”上发送数据),例:http://localhost:8080/servlet05/getServlet?username=zhangsan&userpwd=1111;POST请求发送数据的时候,在请求体当中发送,不会回显到浏览器的地址栏上。
    2. GET请求只能发送普通的字符串,且发送的字符串长度有限制,不同的浏览器限制不同,无法发送大数据量;POST请求可以发送任何类型的数据,包括普通字符串,流媒体等信息:视频、声音、图片,可以发送大数据量,理论上没有长度限制。
    3. GET请求比较适合从服务器端获取数据。
    4. POST请求比较适合向服务器端传送数据。
    5. GET请求支持缓存(可在访问路径加“时间戳”不走缓存);POST请求不支持缓存。
    6. 不管是GET请求还是POST请求,发送的请求数据格式是完全相同的,只不过位置不同,都是统一的格式name=value&name=value&name=value。
  4. GET请求和POST请求使用选择:​​​​​​​
    1. 从服务器上获取资源,建议使用GET请求;向服务器提交数据,建议使用POST请求。
    2. 表单中有敏感信息,建议使用POST请求(GET请求会回显敏感信息到浏览器地址栏上,例:密码信息)
    3. 文件上传,一定是POST请求,要传的数据不是普通文本。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值