文档章节

HTTP协议无状态,到底要怎么理解?【前端】

一代码农码一代
 一代码农码一代
发布于 07/16 18:37
字数 1050
阅读 30
收藏 0

一,故事

一天,你有个需求,你要去超市买一瓶酱油。

到了超市买了酱油,你告诉售货员,下次给我准备下面粉,我下次来拿。

第二次,你去超市拿面粉,售货员说他不记得你什么时候说要准备面粉。

这次你学聪明了,售货员给你写了个纸条,上面有超市的章印,下次你带着纸条来,买上了超市给你准备的面粉

二,无状态协议

1,http超文本传输协议:Hyper Text Transfer Protocol

2,http不会为了下次连接所需要的信息而维护这次连接

3,就像你去超市买酱油,买完就结束了,它不会记录你告诉他的信息,不会记录你下次还要买面粉,下次他也不知道你曾经来过

4,顾名思义无状态是指,当浏览器发送请求给server的时候,server响应,可是同一个浏览器再发送请求给server的时候,他会响应,可是他不知道你就是刚才那个浏览器,简单地说,就是server不会去记得你,所以是无状态协议。而DNS是有状态协议 。

5,再举个例子,像购物车,你买东西加入购物车,如果http协议的话,刷新页面,购物车就为空了。

三,cookie和session

1,在这样的client与server进行动态交互的Web应用程序出现之后,HTTP无状态的特性严重阻碍了这些应用程序的实现,毕竟交互是须要承前启后的,简单的购物车程序也要知道用户究竟在之前选择了什么商品。于是,两种用于保持HTTP连接状态的技术就应运而生了,一个是Cookie,而还有一个则是Session。

2,Cookie是通过client保持状态的解决方式。从定义上来说,Cookie就是由server发给client的特殊信息,而这些信息以文本文件的方式存放在client,然后client每次向server发送请求的时候都会带上这些特殊的信息。让我们说得更详细一些:当用户使用浏览器訪问一个支持Cookie的站点的时候,用户会提供包含username在内的个人信息而且提交至server;接着,server在向client回传对应的超文本的同一时候也会发回这些个人信息,当然这些信息并非存放在HTTP响应体(Response Body)中的,而是存放于HTTP响应头(Response Header);

简单来说,cookie保存在客户端,类似你去超市,售货员给你一个纸条,你拿着纸条走了,下次来带着纸条来

3, 与Cookie相对的一个解决方式是Session,它是通过server来保持状态的。因为Session这个词汇包括的语义非常多,因此须要在这里明白一下Session的含义。首先,我们通常都会把Session翻译成会话,因此我们能够把client浏览器与server之间一系列交互的动作称为一个Session。从这个语义出发,我们会提到Session持续的时间,会提到在Session过程中进行了什么操作等等;其次,Session指的是server端为client所开辟的存储空间,在当中保存的信息就是用于保持状态。从这个语义出发,我们则会提到往Session中存放什么内容,怎样依据键值从Session中获取匹配的内容等。

简单来说,session保存在服务端,类似你去超市,售货员在自己纸条上记录张三下次买什么,下次你来告诉他你叫张三就行了。

© 著作权归作者所有

一代码农码一代
粉丝 3
博文 34
码字总数 17016
作品 0
东城
私信 提问
一站到底 ---前端基础之网络

网络相关的知识是每个前端工程师都应该具备的。很多从事前端的朋友们都没系统学习过计算机网络和http相关内容。在没有建立一个整体的知识体系下,会有一种一站到底答题的感觉,每个知识点都大...

17点
2018/06/29
0
0
深入理解什么是RESTful API ?

前言:最近两年很火爆的网络框架Retrofit,使用它的时候,查看文档会告诉你,要求后台的服务器哥们必须符合REST规范给你设计接口,作为安卓开发工程师来说,我就很奇怪了,REST规范到底是啥?...

aweiloveandroid
2017/06/24
0
0
细说API - 重新认识RESTful

如果你是一个客户端、前端开发者,你可能会在某个时间吐槽过后端工程师的API设计,原因可能是文档不完善、返回数据丢字段、错误码不清晰等。如果你是一个后端API开发者,你一定在某些时候感到...

f8f814630cfc
01/16
0
0
如何理解 Python Web 开发?

因为 python代码的优雅美观且易于维护这一特点,越来越多的人选择使用Python做Web开发。而Python的Web框架百花齐放,目前比较流行的框架有大包大揽的Django,小巧灵活的Flask、Bottle,还有性...

Python资料
2018/06/04
0
0
复制:改需求之路:设计师的一小步,程序员的一大步

原文地址:http://design.jobbole.com/114899/ 那些所谓的“小改动”通常在设计师或产品经理的嘴里,有以下几种描述: 改改文字颜色而已; 换个图标而已啦; 只是一些小改动; 很简单的啦~ ...

zhchl2010
2016/01/03
89
0

没有更多内容

加载失败,请刷新页面

加载更多

maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
今天
8
0
Linux创建yum仓库

第一步、搞定自己的光盘 #创建文件夹 mkdir -p /media/cdrom #挂载光盘 mount /dev/cdrom /media/cdrom #编辑配置文件使其永久生效 vim /etc/fstab 第二步,编辑yun源 vim /ect yum.repos.d...

究极小怪兽zzz
今天
6
0
jar 更新部分文件

C:\Program Files (x86)\Java\jdk1.8.0_102\bin>jar -hIllegal option: hUsage: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...Options: -c c......

圣洁之子
今天
9
0
OSChina 周六乱弹 —— 感谢女装红薯开办了这个网站

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @胖达panda:分享歌词: 我有一只小毛驴我从来也不骑,有一天我心血来潮骑着去赶集,我手里拿着小皮鞭我心里正得意,不知怎么哗啦啦,我摔了一...

小小编辑
今天
2.6K
13
DDD(四)

1,引言 软件开发者大多趋向于将关注点放在数据上,而不是领域上。这对于刚入门的DDD的新手而言也是如此。以我目前的思考方式,数据库依然占据主要的地位。开发一个功能,首先我就会考虑我会...

MrYuZixian
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部