HTTP协议(基础知识)

发布时间:2024年01月23日

1. HTTP-概述

HTTP:Hyper Text Transfer Protocol(超文本传输协议),规定了浏览器与服务器之间数据传输规则。

  • http是互联网上应用最为广泛的一种网络协议

  • http协议要求:浏览器在向服务器发送请求数据时,或者当服务器在向浏览器发送响应数据时,都必须按照固定的格式进行数据传输。

2. HTTP-特点

  • 基于TCP协议:面向连接,安全

TCP是一种面向连接的(在连接之前需要经过三次握手)、可靠的,基于字节流的传输层通信协议,在数据传输方面更安全

  • 基于请求-响应模型:一次请求对应一次响应(先请求后响应)

  • HTTP协议是无状态协议:对于数据没有记忆能力,每次请求或响应都是独立的

无状态指的是客户端发送HTTP请求给服务端之后,服务端根据请求响应数据,响应完后,不会记录任何信息。

所有的HTTP 连接都被构造成一套请求和响应。

  • 优点:速度快

  • 缺点:多次请求之间不能共享数据

2.1 HTTP-协议

????????浏览器和服务器是按照HTTP协议进行数据通信的。

????????HTTP协议又分为:请求协议和响应协议

  • 请求协议:浏览器将数据以请求格式发送到服务器

    • 请求行

    • 请求头

    • 请求体

  • 响应协议:服务器将数据以响应格式返回给浏览器

    • 响应行

    • 响应头

    • 响应体

    在HTTP1.1版本中,浏览器访问服务器的几种方式:

    请求方式请求说明
    GET获取资源。 向特定的资源发出请求。例:百度一下,你就知道
    POST传输实体主体。 向指定资源提交数据进行处理请求(例:上传文件),数据被包含在请求体中。

    在我们实际应用中常用的也就是 :GET、POST

    GET方式的请求协议:

GET /simplepojo?name=tom&age=10 HTTP/1.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.7 
Accept-Encoding: gzip, deflate, br 
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6 
Cache-Control: max-age=0 
Connection: keep-alive 
Cookie: Idea-5a6e92a8=fdff362c-2de9-41df-ab28-9983ad13115c 
Host: localhost:8080 
Sec-Fetch-Dest: document 
Sec-Fetch-Mode: navigate 
Sec-Fetch-Site: none 
Sec-Fetch-User: ?1 
Upgrade-Insecure-Requests: 1 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0 
sec-ch-ua: "Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120" 
sec-ch-ua-mobile: ?0 
sec-ch-ua-platform: "Windows"

请求行 :HTTP请求中的第一行数据。由:请求方式资源路径协议/版本组成(之间使用空格分隔)

  • 请求方式:GET

  • 资源路径:/simplepojo?name=tom&age=10

  • 请求路径:/simplepojo

    • 请求参数:name=tom&age=10

      • 请求参数是以key=value形式出现

      • 多个请求参数之间使用&连接

    • 请求路径和请求参数之间使用?连接

  • 协议/版本:HTTP/1.1

  • 请求头 :从第二行开始,就是请求头。格式为key: value形式

    • http是个无状态的协议,所以在请求头设置浏览器的一些自身信息和想要响应的形式。这样服务器在收到信息后,就可以知道是谁,想干什么了

常见的HTTP请求头有:

Host: 表示请求的主机名
?
User-Agent: 浏览器版本。 例如:Chrome浏览器的标识类似Mozilla/5.0 ...Chrome/79 ,IE浏览器的标识类似Mozilla/5.0 (Windows NT ...)like Gecko
?
Accept:表示浏览器能接收的资源类型,如text/*,image/*或者*/*表示所有;
?
Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网页;
?
Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip, deflate等。
?
Content-Type:请求主体的数据类型
?
Content-Length:数据主体的大小(单位:字节)
  • 请求体 :存储请求参数

    • GET请求的请求参数在请求行中,故不需要设置请求体

    POST方式的请求协议:

    HTTP/1.1 200 
    Content-Type: text/html;charset=UTF-8 
    Content-Length: 11 Date: Mon, 22 Jan 2024 14:16:33 GMT 
    Keep-Alive: timeout=60 
    Connection: keep-alive
    {"name"=tom,"age"=10}
    • 请求行(第一行):包含资源路径、协议/版本(注意这里省略了请求方式)

      • 请求方式:POST

      • 协议/版本:HTTP/1.1

      • 请求状态码:200(正常状态)

    • 请求头(第一行下面全部)

    • 请求体(在浏览器中,是分离出来的) :存储请求参数

      • 请求体和请求头之间是有一个空行隔开

      GET请求和POST请求的区别:

      区别方式GET请求POST请求
      请求参数请求参数在请求行中。 例:/simplepojo?name=tom&age=10请求参数在请求体中
      请求参数长度请求参数长度有限制(浏览器不同限制也不同)请求参数长度没有限制
      安全性安全性低。原因:请求参数暴露在浏览器地址栏中。安全性相对高
文章来源:https://blog.csdn.net/weixin_65712575/article/details/135760103
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。