网络原理之HTTP(2)

本文详细介绍了HTTP请求与响应的结构,包括GET和POST的区别,如数据位置、幂等性、缓存处理等。同时,重点讲解了HTTP报头中的常见属性,如Host、Connection、User-Agent、Referer、Content-Length和Cookie等,阐述了它们在HTTP通信中的作用。
摘要由CSDN通过智能技术生成

HTTP请求与响应

一、HTTP请求
1.首行(方法,url,版本号)
2.header(每一行是一个键值对,键和值之间使用冒号空格分隔)
3.空行(表示header的结束标记)
4.body(GET 请求一般没有body,POST请求一般有body)
二、HTTP响应
1.首行(版本号,状态码,状态码描述)
2.header(每一行是一个键值对,键和值之间使用冒号空格分隔)
3.空行(表示header的结束标记)
4.body(常见的body就是html数据,具体的数据格式取决于Content-Type,具体的长度取决于Content- Length)

GET与POST的区别

一、整体结论:GET与POST没有本质上的区别,大部分情况下,GET能实现的场景,换成POST也可以。POST能实现的场景换成GET也行。但是个别情况下两者时不能互相替代的(传输一个大的文件的时候)
细节上的区别
1.GET一般把用户自定义的数据放在query string,GET一般没有body
POST一般把用户自定义的数据放在body中,POST一般有body
(注:但是实际上,GET也可以让他有body,POST也可以让他没有body)
2.GET一般设计为“幂等的”,POST设计的时候不必考虑“幂等”(HTTP标注建议的)
”幂等“:某一个操作,操作一次和操作多次效果完全一样,如果符合这样的要求,就叫”幂等“。读取数据一般时"幂等”,修改数据一般就是“不幂等”
3.GET请求可以被缓存的,POST请求一般不可以被缓存。
缓存不光设计到各种浏览器,也涉及到各种代理服务器等等网络设备。
浏览器访问页面就是带有缓存的,因为通过网络获取数据很慢(毫秒/秒级),为了提高用户体验,加快页面加载速度,浏览器通常会对一些不太会改变的结果进行缓存。例如:logo图片,这种都是很少改变的,体积又大(相比较于html页面),浏览器获取一次这样的图片之后,就会在本地保存起来,如果下次要用到这个图片,直接从本地读取。
4.GET请求可以被浏览器收藏夹保存起来,POST请求一般不可以被保存(保存的时候body就没有了)
5.注意:以下说法是错误的!!!!
GET传输的数据量是有限的(URL的长的存在上限),POST的传输的数据量是没有限制的。其实是在于HTTP服务器与浏览器上的区别,浏览器代码的约定,代码中数据的读取存放能力,每个浏览器都是不同de)
在HTTP协议标准RFC2616中并没有约定URL的长度是多少,也没有约定body的长度是多少。

HTTP报头(header常见的一些属性)

1.Host:描述了服务器的主机的地址,有时候看到的省略了域名的URL,默认访问的服务器地址,就和当前HTML所在的地址一致。
2.Connection:keep-alive 表示浏览器与服务器之间使用长连接,和长连接相对的是短链接。(HTTP协议也是基于TCP协议的,HTTP3不是基于TCP)
3.User-Agent:简称UA,里面包含了用户的设备的操作系统和浏览器的类型和版本。现在主要用于区分手机与电脑,UA表面上的意图是显示了浏览器和操作系统的版本。实际上更深层的意思是,服务器要了解当前的浏览器都能支持哪些功能,根据不同的功能来决定返回的数据是啥样的。
4.Referer:表示当前的页面时通过那个页面跳转过来的。这个字段也可能没有,例如:直接从浏览器的地址框里输入一个URL,此时访问的页面就是没有referer,但是如果在某个页面里点击一个a标签跳转到另一个页面就有referer。
5.Content-Lenght:385 body的长的(字节)
6.Content-Type:(body的数据格式)常见的一些取值:7.text/html:body时按照HTML来组织的。
有以下形式:
x-www-form-urlencoded:body时按照类似于query string的方法来组织数据的;
text/piain:纯文本结构
text/css:css格式的数据
image/jpg:body就是一个jpg格式的图片
application/javascript:body就是一个js文件
8.Cookie
1.是一个字符串,键值对结构的字符串,在浏览器里保存着(每个域名/地址下都有自己的Cookie)此处cookie的键值对里面的内容(有那些键,那些值,都是由程序猿自己约定的)。
2.Cookie的内容来自于服务器:HTTP响应中有一个/多个Set-Cookie字段,Set-Cookie字段里面的内容就会被浏览器保存下来。
3. Cookie起到的效果/要解决的问题:最典型的就是识别用户身份。注意:服务器同一时刻会收到大量的HTTP请求,这些请求分别来自于那些用户,服务器就必须要明确的识别出来。
9.生成Cookie操作
在这里插入图片描述
在这里插入图片描述
10.Cookie的五问
(1)Cookie是啥?是一个客户端存储的字符串,里面是键值对(这些都是程序员约定的)结构。
(2)Cookie是干啥用的?往往用来区别用户的身份。
(3)Cookie从哪里来?服务器通过set-Cookie(响应报文中存在)字段返回的,一般在用户登陆成功后返回。
(4)Cookie在哪里存放?在客户端(浏览器)存,每个域名下存不同的Cookie。
(5)Cookie到哪里去?后续给服务器发送HTTP请求就会自动带上Cookie字段。
注意:注意区分Cookie与Session:Cookie是客户端概念;Session是服务器概念。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吃鸡翅吗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值