【HTTP】HTTP基础知识一

    • 请求
      • URL
      • 方法
        • GET方法
        • POST方法
        • GET和POST的区别
      • 请求报头 - header

​ 在客户端与服务器之间,是基于网络来通信的。HTTP协议是最常用的一种网络通信协议(超文本传输协议)。平时我们用到的抢票软件就是通过抓包工具来构造HTTP请求来完成的。所以我们现在就来了解HTTP的相关知识。

【HTTP】HTTP基础知识一_第1张图片


零、

主流HTTP的版本是1.1

一、HTTP协议的报文格式

请求:客户端给服务器发送的数据

响应:服务器给客户端返回的数据

  • 请求

【HTTP】HTTP基础知识一_第2张图片

  1. 首行:方法、URL、版本号
  2. 请求头、键值对结构:每个键值对占一行,键和值之间使用冒号空格分割
  3. 空行:相当于请求头的结束标志
  4. 正文:可选
  • 响应
    【HTTP】HTTP基础知识一_第3张图片
    1. 首行
    2. 响应头
    3. 空行:
    4. 正文:可选

请求

通过抓包工具来获取请求的具体内容

URL

URL:统一资源定位符,对应着互联网的某一资源地址

  • 格式:
    在这里插入图片描述服务器地址:可以是一个IP地址,也可以是域名,但是IP地址不好记。
    端口号:通常被隐藏起来。(对于HTTPS的请求,浏览器会自动加上443端口,因为一般的HTTPS服务器都是用 443;对于HTTP的请求,浏览器会自动加上80端口,一般的HTTP服务器都是用80)

  • URL的部分内容是可以省略的:

    1. 省略域名:继续访问当前网站的其他资源

    2. 省略端口号:浏览器自动填充默认端口

    3. 省略带层次的路径:表示访问/目录

    4. 省略query string:本来就是可选的

      片段标识符:也可以省略

  • URL中的url encode
    在这里插入图片描述
    C%2B%2B:URL里面有一些表示特定含义的符号(或者中文符号),如果query string中也含有这些字符,就会产生错误,我们就需要对其进行url encode

方法

请求报文中的首行的第一部分,使用较自由。触发请求

序号 方法 描述
1 GET 请求指定的页面信息,并返回实体主体。
2 HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
5 DELETE 请求服务器删除指定的页面。
6 CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
7 OPTIONS 允许客户端查看服务器的性能。
8 TRACE 回显服务器收到的请求,主要用于测试或诊断。
9 PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新 。

GET方法

  1. 直接在浏览器地址栏里输入一个URL,输入回车;或者点击浏览器收藏夹里面的链接

  2. HTML中的一些标签

    img有个src属性,写一个URL,浏览器会根据img中的src构造出对应的HTTP GET请求。同理,还有a中的href属性

  3. 还能使用JS,直接在浏览器前端构造出HTTP GET请求(ajax)

  4. 各种编程语言(只要能访问网络),就能构造出HTTP GET请求

    GET请求的特点:

    1. 首行里面的第一部分是GET

    2. URL里面的query string可以为空

      query string:请求参数,在URL中?的后面。本质上可以理解为一种序列化的格式,里面可以保存键值对。

    3. GET请求里面有很多组header这样的键值对

    4. GET请求一般body是空的。

    GET请求长度是没有上限的。

POST方法

登录所用到的。

POST请求的特点:

  1. 首行的第一个部分,就是POST
  2. URL后面没有query string(一般都是没有的,个别情况会有)
  3. header有若干个键值对结构
  4. body一般不为空。body中的具体数据格式,由请求header中的Content-Type描述,具体长度由header中的Content-Length描述

GET和POST的区别

没有本质区别。

有一些细节区别:

  1. (习惯上)GET把客户端的数据通过query string来传输,POST把客户端的数据通过body来传输

  2. (习惯上)GET用于从服务器获取数据,POST是客户端给服务端提交数据。

  3. 要求把GET的请求的处理设置成“幂等”;POST请求的处理不要求实现成”幂等“

    幂等:请求重复发送,不会产生负面影响

  4. GET请求可以被缓存(浏览器的收藏夹),POST不行
    【HTTP】HTTP基础知识一_第4张图片

请求报头 - header

表示在 HTTP 请求或响应中的用来传递附加信息的字段。

  • Host

如果是POST请求,就会带上下面两个header

  • Content-Length:body的长度

  • Content-Type:body的格式

  • User-Agent:保存有当前浏览器的类型/版本,以及操作系统的类型、版本

    UA最重要的意义就是用来区分请求是PC端还是移动端。(实际上很少这样做采取响应式布局)

你可能感兴趣的:(http)