【网络协议】Http-下

HTTP常见Header
Content-Type: 数据类型(text/html等)
Content-Length: Body的长度
Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
User-Agent: 声明用户的操作系统和浏览器版本信息;
referer: 当前页面是从哪个页面跳转过来的;
location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;
Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能;

以上报头前面的文章多少有涉及到,在这里理解可谓水到渠成。这里只说明cookie。

在 Web认证中 ,因为HTTP协议本身的局限,必须采用其他技术将相关认证标记以某种方式持续传送,以免客户从一个页面跳转至另一个页面时重新输入认证信息。基于Cookie的认证过程,主要由以下三个阶段组成:

(1)发布Cookie。当用户试图访问某Web站点中需要认证的资源时,Web服务器会检查用户是否提供了认证Cookie,如果没有,则将用户重定向到登录页面。在用户成功登录后,Web服务器会产生认证Cookie,并通过HTTP响应中的Set-Cookie头发送给客户端,用于对用户随后的请求进行检查和验证,接着将用户重定向到初始请求的资源。

(2)检索Cookie。在用户随后的访问请求中,客户端浏览器检索Path和Domain等属性与用户请求资源相匹配的Cookie,并将找到的Cookie通过Http请求中的Cookie头提交给Web服务器。

(3)验证CookieWeb服务器提取客户端浏览器递交的Cookie,验证其中的访问令牌。若合法,则将访问请求的资源发送给客户端浏览器;反之则拒绝用户的访问请求。Cookie 认证技术简化了用户访问 Web 网站资源的过程,即用户只需在初次登录网站时输入身份信息进行认证,随后便可以访问被授权的所有站点资源,不再需要重复手工提交身份信息。

下面中是百度百科关于Cookie和Session的解释:

Cookie:举例来说, 一个 Web 站点可能会为每一个访问者产生一个唯一的ID, 然后以 Cookie 文件的形式保存在每个用户的机器上。如果使用浏览器访问 Web, 会看到所有保存在硬盘上的 Cookie。在这个文件夹里每一个文件都是一个由"名/值"对组成的文本文件,另外还有一个文件保存有所有对应的 Web 站点的信息。在这里的每个 Cookie 文件都是一个简单而又普通的文本文件。透过文件名, 就可以看到是哪个 Web 站点在机器上放置了Cookie(当然站点信息在文件里也有保存) 。

所谓"cookie"数据是指某些网站为了辨别用户身份,储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。
Session:在计算机中,尤其是在网络应用中,称为"会话控制"。session存储特定用户所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web页时,如果该用户还没有会话,则Web服务器将自动创建一个 Session对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在Session对象中。有关使用Session 对象的详细信息,请参阅"ASP应用程序"部分的"管理会话"。注意会话状态仅在支持cookie的浏览器中保留。

cookie是服务器端创建,浏览器端保存的数据。

当登录网站时发送的http请求携带账号密码,服务器会创建一个唯一的session对象来描述你的会话,并在http响应报头中携带"Set-Cookie: session id"的字段。方便你在会话结束或被销毁前,对该网站发起新的请求,这时浏览器就会自动发送携带Cookie中的session id的请求来进行身份识别。

cookie有到期时间。到期后,再次访问这个Web站点,服务器根据其请求中携带的cookie判断其已经到期,就会提示你再次登录,并销毁原来的session,创建一个新的session对象管理新的会话,也会创建新的cookie返回给浏览器。

当然cookie不止可以进行身份识别,当你在购物网站上购物的时候,把第一个商品加入购物车,然后去访问第二个商品。由于Http是无状态的,无法知道原来你的购物车中有什么,所以利用cookie把第一个商品的信息在本地浏览器存储下来,然后在访问第二个商品的时候把cookie随着新的请求发送。这样cookie就会存储多个商品的信息,最后付款时从cookie中提取这些信息,发送请求给服务器形成购物车功能。

相关推荐
桌面运维家1 天前
VHD/VHDX 数据守护:BAT位图校验与修复
linux·服务器·网络
F1FJJ1 天前
Shield CLI Postgres v0.3.10:当 142 张表挤在一张 ER 图里,我们做了什么
网络·vscode·网络协议·postgresql·开源软件
TechWayfarer1 天前
高并发场景下的IP归属地查询架构:从20ms到0.5ms的优化实践
网络协议·tcp/ip·架构
Hello_Embed1 天前
嵌入式上位机开发入门(四):TCP 编程 —— Client 端实现
网络·笔记·网络协议·tcp/ip·嵌入式
小雨青年1 天前
鸿蒙 HarmonyOS 6 | Video 组件网络视频播放异常排查实战
网络·音视频·harmonyos
网硕互联的小客服1 天前
CentOS系统如何卸载桌面并以shell 字符界面启动?
运维·服务器·网络·安全
大连好光景1 天前
接口测试之Postman+Jmeter
jmeter·http·postman
电子科技圈1 天前
Durin:Aliro标准赋能,打造无缝移动入户体验
人工智能·mcu·物联网·网络协议·智能家居·智能硬件·iot
攻城狮在此1 天前
华三中小型企业二层组网配置案例一(单ISP+单链路)
网络·华为
REDcker1 天前
Nagle 算法与 TCP_NODELAY、TCP_CORK 详解
网络·tcp/ip·算法