HTTP协议的基本格式详解

HTTP协议由请求和响应组成,请求包括首行(方法+URL+版本号)、请求头部、空行和正文。GET和POST是最常见的方法,GET用于获取资源,POST用于传输数据。响应包含版本号、状态码、状态码描述、响应头部、空行和正文。状态码如200表示成功,404表示资源未找到。请求头部的Host字段用于指定服务器,Cookie用于存储用户数据。
摘要由CSDN通过智能技术生成

目录

一.HTTP协议的组成

 1.HTTP请求: 

1.首行:方法+URL+版本号  如图:

 2.请求头部(header)

3.空行

​编辑 4.正文(body)

2.HTTP响应:

1.首行:

 总结:


一.HTTP协议的组成

我们使用fiddler就可以获取HTTP请求或者HTTP响应.如图:(图片是例子,它大概长什么样)

 1.HTTP请求: 

                                                                 图A 

1.首行:方法+URL+版本号  如图:

  •  方法有很多,但最常用就两个:  GET --获取资源--支持的HTTP协议的版本:1.0和1.1                                                                  POST--传输实体主体--支持的HTTP协议的版本:1.0和1.1
  • URL的组成: 协议名 // ip : 端口号 / 带层次的路径 ? 查询字符串(以&为分隔)
    细心你会发现下面的URL没有端口号,这是因为浏览器会自动为我们添加端口号.HTTP协议的端口号是80,HTTPS协议的端口号是443.
  • 版本号:最常见的版本号是: HTTP / 1.1, 最新的版本号是:HTTP / 3

 面试题: Get与Post有什么区别?

  答:没有本质上区别,但是在习惯上有区别:

  1. GET习惯上用来表示"获取一个数据", POST则用来表示"提交一个数据"
  2. GET一般没有正文(body),需要携带的数据则放到URL中, POST一般有正文(body)
  3. GET请求通常会设计成幂等, POST则无需求
  4. GET可缓存的(前提是幂等), POST则不能
  5. GET请求可以被浏览器收藏,POST则不能

        

 2.请求头部(header)


    键值对结构(每个键与值之间使用 : 加空格来分割),每个键值对占一行,可以有n行,空行为结束标志,这里的键值对大部分都是HTTP协议规定的,当然也可以添加自定义的键值对

1.  

 Host这个属性,描述了要访问的服务器是谁.
你会有这样的疑问,URL中已经写了要访问的服务器是谁,为什么还要再写一遍?
答:  大多数情况下,Host的值与URL中的域名是一样的,但是,当我们不直接访问服务器,而是"代理"访问服务器,这时候Host的值与URL的域名就不一样了.Host的值是最终目标,URL的域名是当前目标.

2.  Content-Length 描述了body的长度,单位为字节

3.  Content-Type 描述了body的数据格式


上图A中是没有这两个东西的,因为上面两个是根据正文(body)来显示的,Get请求是没有body的,因此没有这两个东西.那么我们找个Post请求,如图.其中,application/json是数据格式(描述数据是按json格式组织的) charset=utf8是数据的字符集

对于Content-Type常见的有:application/json,application/x-www-form-encoded
,text/html,text/css,application/javascript ,image/png 等等

4. User-Agent,简称UA,描述了,系统是什么版本,浏览器是什么版本


早期,浏览器种类很多,功能也是参差不齐,对于网站开发来说,难度巨大,因此发明了User-Agent,告诉服务器,主机是什么,然后服务器根据不同主机的型号,返回不同的页面.可是,现在浏览器之间的区别很小了,UA的作用也就微乎其微了.现在,UA的重要用途是区分用户是手机/平板/pc.

5. Referer描述了当前页面是从哪个页面跳转来的.上面的例子就是从百度跳转过来的.


它的用途是: 大部分广告是点击收费的.如果你是从百度上点击广告,那么百度就收广告一份钱,那么你是从搜狗上点击的广告的,那搜狗就收广告一分钱,而广告商就通过Referer来确定你从哪里点击过来的.好记录一下数据. 这种跟钱有关系的,一般都是安全加密的, 之前也说了,HTTPS是对HTTP协议加密后的,因此,绝大部分的网站都是HTTPS的,保证数据不被篡改.

 

 6.Cookie,它也是键值对,键值之间使用;分割,键和值之间使用=分割

  • 这里的键值对都是程序员自定义的数据,至于什么意思,只有程序员知道.
  • Cookie的本质,是浏览器在本地存储用户自定义数据的一种关键机制.
  • 浏览器自身需要存储一些数据的,为了安全,浏览器会做出限制,是禁止页面访问硬盘的,但浏览器提供了Cookie机制,允许网页往浏览器这边存储一些自定义的键值对,这些数据通过浏览器提供的api,写入特定的文件中的. 
  • Cookie从服务器来,当我们的浏览器访问服务器的时候,服务器就会在HTTP的响应中,通过Set-Cookie字段,把Cookie的键值对,返回给浏览器,浏览器收到这个数据,就会在本地存储
  •  Cookie会在下次请求的时候,带给服务器.Cookie在浏览器这边只能算是暂存,只有服务器才能发挥作用.
  • Cookie是浏览器本地存储数据的机制,由于客户端很多,每个客户端提供的服务还不一样,因此,服务器通过cookie来区别,例如,客户端在登录的时候,服务器就识别好客户端的角色,把角色信息返回给浏览器,在cookie中保存,后续客户端访问的时候,带着这个cookie就行了,此时服务器就知道这个客户端是干啥的了.
  • Cookie最典型的应用是存储用户的身份信息.

3.空行

请求头部结束的标志

 4.正文(body)

 HTTP请求一般是没有正文的

2.HTTP响应:

1.首行:

版本号+状态码+状态码描述

  • HTTP/1.1是版本号--200是状态码--OK是状态码描述
  • 解析:版本号与请求相同,状态码是数字,数字来表示这次请求执行成功还是失败,并且失败的原因状态码描述是通过一个或者一组单词,描述这个状态码的含义
  • 状态码常见的有:
200  OK表示请求成功
404  Not Found表示要访问的资源不存在

403  Forbidden

访问被拒绝(没有权限)
500  Internal Server Error服务器内部错误
504  Gateway Timeout服务器访问超时了

302  Move temporarily

临时重定向
301  Moved Permanently永久重定向
重定向是指访问旧的地址被自动引导到新的地址去了

 状态码分为以下几个大类,需要背下来(面试题,只要问到HTTP协议,这个必考)

1XXinformational(信息性状态码)接受的请求正在处理
2XXSuccess(成功状态码)请求正常处理完毕
3XXRedirection(重定向状态码)需要进行附加操作以完成请求
4XXClient Error(客户端错误状态码)服务器无法处理请求
5XXServer Error(服务器错误状态码)服务器处理请求出错

2.响应头部

 3.空行

4.正文

 总结:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值