HTTP学习笔记

什么是HTTP协议?

HTTP(Hyper Text Transfer Protocol)<超文本传输协议>的缩写.是用于从WWW服务器传输超文本到本地浏览器的传输协议.HTTP是一个基于TCP的应用层协议,由请求和响应构成,是一个标准的个客户端和服务器模型.

主要是用来规定用户端和服务器的数据传输格式。

HTTP协议是基于请求与响应模式的、无状态、应用层的协议。

HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理有如下的过程:
(1)客户与服务器建立连接;
(2)客户向服务器提出请求;
(3)服务器接受请求,并根据请求返回相应的文件作为应答;
(4)客户与服务器关闭连接。

在这里插入图片描述

获取HTTP报文

这里我使用了Fiddler抓包工具

  • 打开Fiddle
  • 任意选择一条HTTP请求
  • 右键选择save->selected
  • Sessions->as test**

在这里插入图片描述

  • 任意命名保存

在这里插入图片描述

  • 用记事本查看文件

在这里插入图片描述

HTTP协议包括请求和响应两部分

http请求报文

http请求报文四个部分组成:请求行、请求头部、空行、请求数据。
HTTP请求报文

1. 请求行

请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。比如GET /data/info.html HTTP/1.1

  • 方法字段就是HTTP使用的请求方法,比如常见的GET/POST
请求方法备注
GET请求资源
POST提交资源
Head获取响应头
PUT替换资源
DELETE删除资源
OPTIONS允许客户端查看服务器的性能
TRACE回显服务器收到的请求,用于测试或诊断
  • HTTP协议版本有两种:HTTP1.0/HTTP1.1 可以这样区别: HTTP1.0对于每个连接都只能传送一个请求和响应,请求就会关闭,HTTP1.0没有Host字段;而HTTP1.1在同一个连接中可以传送多个请求和响应,多个请求可以重叠和同时进行,HTTP1.1必须有Host字段。

  • URL(Uniform ResourceLocator):统一资源定位符,用于描述网上的资源

    在这里插入图片描述

2. 请求头部

HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者 POST)。如有必要,客户程序还可以选择发送其他的请求头。大多数请求头并不是必需的,但Content-Length除外。对于POST请求来说Content-Length必须出现。

常见的请求头字段含义:

请求头字段名称含义
Accept浏览器可接受的MIME类型,如:image / jpg / html
Accept-Encoding浏览器能够进行解码的数据编码方式,比如gzip
Accept-Charset客户端可接受的字符集,如gb2312、iso-8859-1
Accept-Language浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到,
Authorization授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中
Content-Length表示请求消息正文的长度
Host客户机通过这个头告诉服务器,想访问的主机名
If-Modified-Since客户机通过这个头告诉服务器,资源的缓存时间。只有当所请求的内容在指定的时间后又经过修改才返回它,否则返回304“Not Modified”应答
Referer客户机通过这个头告诉服务器,它是从哪个资源来访问服务器的(防盗链)。包含一个URL,用户从该URL代表的页面出发访问当前请求的页面
User-AgentUser-Agent头域的内容包含发出请求的用户信息。浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。
Cookie客户机通过这个头可以向服务器带数据,这是最重要的请求头信息之一
Pragma指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。
From请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。
Connection处理完这次请求后是否断开连接还是继续保持连接。
RangeRange头域可以请求实体的一个或者多个子范围
UA-Pixels,UA-Color,UA-OS,UA-CPU:由某些版本的IE浏览器所发送的非标准的请求头,表示屏幕大小、颜色深度、操作系统和CPU类型。

3. 空行

通过一空行,告诉服务器请求头部到此为止

4. 请求数据

若方法字段是GET,则此项为空,没有数据

若方法字段是POST,则通常来说此处放置的就是要提交的数据

比如要使用POST方法提交一个表单,其中有user字段中数据为“admin”,
password字段为123456,那么这里的请求数据就是
user=admin&password=123456,使用&来连接各个字段。
在这里插入图片描述

HTTP响应报文

同样的,HTTP响应报文也由三部分组成:响应行、响应头、空行、响应体
在这里插入图片描述
在这里插入图片描述

1.响应行

响应行一般由协议版本、状态码及其描述组成 比如 HTTP/1.1 200 OK

其中协议版本HTTP/1.1或者HTTP/1.0,200就是它的状态码,OK则为它的描述。

常见状态码(Status Code)

状态码含义
100~199表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程。
200~299表示成功接收请求并已完成整个处理过程。常用200
300~399为完成请求,客户需进一步细化请求。例如:请求的资源已经移动一个新地址、常用302(意味着你请求我,我让你去找别人),307和304(我不给你这个资源,自己拿缓存)
400~499客户端的请求有错误,常用404(意味着你请求的资源在web服务器中没有)403(服务器拒绝访问,权限不够)
500~599服务器端出现错误,常用500

2.响应头

响应报文头,也是由多个属性组成;

响应头也是用键值对k:v

服务器通过响应头来控制浏览器的行为,不同的头浏览器操作不同

响应头描述
ServerHTTP服务器的软件信息
Date响应报文的时间
Expires指定缓存过期时间
Set-Cookie种Cookie
Last-Modified资源最后修改时间
Content-type响应类型的字符集
Content-length内容长度
Connection如keep-Alive,表示tcp连接不关闭,不会永久保持连接,服务可设置
Location指明重定向的位置,新的URL地址,如304情况

3.响应体

服务器返回给客户端的文本信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值