【网络协议】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中提取这些信息,发送请求给服务器形成购物车功能。

相关推荐
Novproxy_Z21 分钟前
商用代理避坑:如何识别商家拿机房 IP 冒充住宅 IP
java·网络·tcp/ip
垆边人似月.32 分钟前
RDMA 文件传输踩坑(五):READY 发送成功后,为什么出现 Work Request Flushed Error?
服务器·网络·tcp/ip
HideF1 小时前
nmcli
linux·服务器·网络
qetfw2 小时前
UOS DHCP Relay:跨网段分配与 IP、DNS、网关验证
linux·服务器·网络·tcp/ip·uos
尹人入圣2 小时前
目前热门的IP驱动产业新场景新工具
网络·python·网络协议·tcp/ip
中屹指纹浏览器svip3 小时前
只用指纹浏览器,不搭配IP可以吗?
网络
jimmyleeee3 小时前
Agent安全之八:OWASP ASI08 级联失效------当每一个 Agent 都“正确”,系统却走向灾难
网络·安全·web安全
缓慢更新3 小时前
AI 辅助生成单测:从接口定义到用例的流水线
java·服务器·前端·网络·数据库·人工智能
叼烟扛炮4 小时前
Linux 学习笔记(四十一):TCP 并发演进——从单进程到多线程服务器
linux·运维·服务器·网络·笔记·学习·tcp/ip
叼烟扛炮4 小时前
Linux 学习笔记(四十三):网络编程进阶——自定义协议解决 TCP 粘包与守护进程
linux·开发语言·网络·笔记·tcp/ip