HTTP协议的基本格式

HTTP

    • 一、HTTP协议的具体格式。
      • 1、基本格式
      • 2、使用抓包工具观察格式
        • 请求
          • 首行
            • 首行中的方法(HTTP1.1)
          • 请求头(header)
            • Host/Connecion/User-Agent
            • Cookie
            • Referer
        • 响应
          • 首行
            • 状态码
          • 响应头(header)
            • Content-Type/Content-Length
            • 常见的Content-Type
            • Set-Cookie
        • Cookie与Set-Cookie(面试)
          • Cookie与Session
    • 二、GET和POST的区别

一、HTTP协议的具体格式。

1、基本格式

HTTP协议的基本格式_第1张图片
不是每个请求和响应都具有以上每个部分

2、使用抓包工具观察格式

请求

我们需要使用抓包工具 fiddler,才能大概分析出HTTP协议中具体的格式。fiddler 这个抓包工具不会的话建议去B站看看,很多教程。
然后我们先简单抓个包(进入csdn)说一下请求中的大概格式:
HTTP协议的基本格式_第2张图片

首行

HTTP协议的基本格式_第3张图片

首行中的方法(HTTP1.1)

POST、GET、HEAD、PUT、OPTIONS、DELETE、TRACE、CONNECT
常用的就是 POST 和 GET 方法

请求头(header)
Host/Connecion/User-Agent

HTTP协议的基本格式_第4张图片

Cookie

Cookie是由HTTP服务器设置的,保存在浏览器中,但HTTP协议是一种无状态协议,在数据交换完毕后,服务器端和客户端的链接就会关闭,每次交换数据都需要建立新的链接,所以我们设置了Cookie。

就像我们去超市买东西,没有积分卡的情况下,我们买完东西之后,超市没有我们的任何消费信息,但我们办了积分卡之后,超市就有了我们的消费信息。cookie就像是积分卡,可以保存积分,商品就是我们的信息,超市的系统就像服务器后台,http协议就是交易的过程。

Referer

当我随便点击一篇博客进入后,再次抓博。
HTTP协议的基本格式_第5张图片
有些包中会有Referer,它代表的意思就是当前这个页面是从哪个网站跳转过来的。
有同学发现了,GET方法中很少有请求正文(也就是body)。现在我们来看下响应的包长啥样

响应

HTTP协议的基本格式_第6张图片

首行

HTTP协议的基本格式_第7张图片

状态码

HTTP协议的基本格式_第8张图片
常见的状态码:
200 访问成功
302 重定向,例如登陆成功后跳转页面.而header中有些会有Laction字段表示接下来要跳转带那里
403 没有权限
404 资源没找到,一般是URL写错了
500 服务器出现了问题

响应头(header)
Content-Type/Content-Length

HTTP协议的基本格式_第9张图片
让我们来看看响应正文

HTTP协议的基本格式_第10张图片
它的格式取决于Content-Type

常见的Content-Type

x-www-from-urlencoded : 按照类似于(查询字符串)query string格式
text/html:body是按照html的格式来组织的
image/gif:body是一个gif
text/plain:纯文本结构
text/css:css格式数据
image/jpg:body就是一个jpg格式的图片
application/javascript:body就是js文件

Set-Cookie

我将记录删除,重新登陆gitee。
HTTP协议的基本格式_第11张图片

HTTP响应中,有一个/多个Set-Cookie字段 Set-Cookie字段里面的内容就会被浏览器保存下来
浏览器保存好服务器返回的Cookie后,如果下次再访问这个服务器,此时请求中就会自动加上Cookie这个字段,字段里的值就是之前从服务器这边返回的值

Cookie与Set-Cookie(面试)

我们来分析一下:
Cookie是什么?
客户端存储的字符串,字符串内的结构是键值对结构;
Cookie来自哪里?
服务器通过Set-Cookie字段返回的,一般在用户登录成功后返回;
Cookie干什么?
前面我们说的HTTP是无状态协议,且同一时刻会有大量的用户访问,为了区分每个用户,所以添加Cookie能够识别用户且区分不同的用户;
Cookie到哪里去?
后续客户端给服务器发送请求,会自动加上Cookie字段。
HTTP协议的基本格式_第12张图片

Cookie与Session

Cookie中有一个sessionid,而服务器中以键值对的形式存储了Session。
例如sessionid=123,当客户端发送请求给服务器时,服务器解析出Cookie中的sessionid=123,即key的值是123,通过get(key)就可以得到一个value,这个value里就有对象,对象里就包含了你在这个网站的信息。比如你登录了抖音成人版,然后你的浏览记录、收藏、喜欢就会返回到你到手机上。(这只是一个例子,手机app应该不是根据Cookie来返回的。但是原理应该大差不差)

二、GET和POST的区别

  • 本质上没有区别
  • GET请求是放到URL(网址)中的query string中的,POST数据是放到body中的。
  • GET一般用于取数据,POST一般用于提交数据(注意修饰词一般
  • GET能够被浏览器缓存,而POST不行

后续有一篇关于HTTP为什么要升级HTTPS的博客,欢迎来访
HTTP升级HTTPS

你可能感兴趣的:(网络原理,java)