http请求报头header

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

                                                           http 请求报头header

一.认识请求报头(header)

1.Host

2.content-length

3.content-type

常见的三种格式

小结

 二.User-Agent(简称UA)

三.Referer

四.Cookie 

cookie从哪来

cookie到哪去

cookie典型的应用场景



前言

提示:这里可以添加本文要记录的大概内容:

上篇文章我们借助抓包工具了解到http协议报文格式:从请求和响应方面入手

了解到了url的基本组成,还有一些方法

今天我们来探讨Http协议的细节


提示:以下是本篇文章正文内容,下面案例可供参考

  http 请求报头header

一.认识请求报头(header)

上文讲到http协议的请求报文分为四部分,今天讲讲请求报头,这里的键值对都是标准规定的,有特定含义的

这里介绍几个常见的报头种类:

1.Host

表示服务器上的地址和端口(去哪里找到服务器)

例如,Host:www.sogou.com

可见这放的就是ip+端口,省略就是默认值,端口可以省略http默认值是80,https默认值是443

  那么既然url里面也有服务器的ip和端口,为什么还要搞个host?

url里的www.sogou.com

事实上,url里面的ip,和端口,和host不完全一样,当请求是通过代理来访问的时候,是可能不一样的(fiddler中无法体现)

2.content-length

表示body中的数据长度

http协议在传输层是基于tcp(http 3.0之前这样的),既然是tcp就要注意粘包问题,之前讲过,

  • 可以使用一个约定的字符串, 比如空行,
  • 也可以约定报文的长度解决

在这里我们有content-length来表示数据长度,例如

我们可能会将俩次get请求读到一起,第二个get和前一个body混为一谈

3.content-type

表示请求中的body数据格式,由于body中的数据格式不同,对接受方来说解析方法截然不同

常见的三种格式

1.form表单构造的请求,就是这个Content - Type,其实就是 html 的 form标签

2. multipart/form-data: form 表单提交的数据格式

这种格式主要是在上传文件的时候会出现

 3.application/json :数据为Json格式,body格式形如:

小结

注意这俩字段,不一定有,但是如果有一个,就会有另一个

比如请求没有body(get)就没有这俩字段

请求有body(post)一定有这俩字段

 二.User-Agent(简称UA)

表示浏览器/操作系统的属性. 形如

 分别描述了火狐浏览器,操作系统版本,win nt是系统内核名字,一个浏览器的内核(applewebkit),还有最熟悉的谷歌浏览器,mac电脑上的默认浏览器safari

小结:ua主要包含的信息,就是操作系统信息和浏览器的信息,描述了用户在使用啥样的设备上网

在之前系统不同,浏览器不同,对页面的支持程度也不同

 后来随着浏览器的发展,发明了技术,响应式页面,通过特殊的css和js,感知当前浏览器的窗口的尺寸,根据不同的尺寸,重新排列页面布局。

现在很多网站都是这样,写一份页面,就能兼容多个设备了

现在及时ua失去了最初的作用,也可以用来在服务器统计用户的设备情况

三.Referer

可能没有

Refere指的是当前这个页面,从哪个页面跳转过来的(上级页面是啥),在浏览器地址栏里直接输入一个地址就没referer,直接点收藏夹也没有

cpc广告,按照点击计费,如果运营商篡改了referer,如图:

如果运营商利用reference跳转到他的页面上,又因为cpc计费,导致资金损失,这里就需要对协议加密,典型的是https协议

四.Cookie 

也是请求报头中的一个重要字段,是浏览器在本地存储数据(存到硬盘上)的一种机制   

 浏览器为了安全期间,禁止网页js访问你电脑的硬盘(文件系统)

因此,浏览器专门提供了特殊的api给网页使用,可以让网页存储一些简单的数据

 如何组织:

点击浏览器的钥匙锁,点击cookie,发现这些都是域名来组织的

注意 cookie这里的键值对都是简单的字符串,使用cookie作为保存数据的手段,只能存一些简单的键值对信息和简单的字符串,但是想保存个图片啥的,存falsh,是做不到的。

比如cookie可以存:

1.上次访问页面的时间

2.当前网页的访问次数

3.当前访问页面的身份标识(身份标识,id)

注意,这里存什么,都是程序员自定义的(代码控制)

cookie从哪来

cookie 是存在浏览器的,来源是服务器

例如访问一个网站2345

像这里的cookie都是咱们浏览器访问了2345.com服务器之后由服务器返回的,在服务器返回的响应报文中,可以在响应header中包含一个/多个 set-cookie这样的资源,浏览器看到set-cookie就会把这样的数据给保存在浏览器本地

注意这些set-cookie由于是在head里面键值对方式存储,都是在服务器代码中构造出来的

cookie到哪去

来自于服务器,存储于浏览器,还要再回到服务器。

当浏览器保存了cookie之后,下次浏览器访问同一个网站,就会把之前本地存储的cookie再通过http请求header中的cookie给带过去

既然来源服务器,回到服务器,经历这一圈是因为服务器要服务的客户端是很多的,这些不同的客户端应该要有不同的数据

cookie典型的应用场景

最常用的场景是在客户端维持登录状态

在某个网站上登录成功后,浏览器就会机制当前登录用户的身份信息,然后再接下来访问网站的其他页面,服务器也能直到咱们是谁在登录(总不能每次打开一个页面都重新登录一遍

注意这里的首次登录,和第二次登录的过程,浏览器这边存的是身份标识,服务器这边存储具体信息(键值对),根据身份标识绑定,最终服务器返回给浏览器一个页面 

生活中的cookie 医院看病

注意理解用户拿到就诊卡就是一个身份标识,里面记录了set-cookie这样的键值对,医院(服务器)刷卡拿到的值,就是你的具体信息了,每次去不同诊室的刷卡过程,就省去了一边右一边的登录登记,使个人一直在维持登录状态

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值