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

相关推荐
hrw_embedded6 分钟前
基于CH395Q网卡移植ftplib的FTP客户端
网络·stm32·ftp·linux库
不是起点的终点11 分钟前
内网穿透(FRP)
网络
北京耐用通信13 分钟前
耐达讯自动化Profinet转Devicenet网关:精细化工行业的“协议融合利器”
人工智能·物联网·网络协议·自动化·信息与通信
Blurpath住宅代理14 分钟前
动态代理的五大优点:提升爬虫效率与安全性
网络·爬虫·动态ip·住宅ip·住宅代理
三水不滴16 分钟前
计算机网络核心网络模型
经验分享·笔记·tcp/ip·计算机网络·http·https
XHW___00121 分钟前
webrtc 关键模块创建的时机
网络·音视频·webrtc
Trouvaille ~22 分钟前
【Linux】UDP Socket编程实战(二):网络字典与回调设计
linux·运维·服务器·网络·c++·udp·操作系统
凉、介28 分钟前
静态路由探究
网络·笔记·操作系统·嵌入式
逐步前行29 分钟前
STM32_内部结构
网络·stm32·嵌入式硬件
云小逸38 分钟前
【nmap源码学习】 Nmap 源码深度解析:nmap_main 函数详解与 NSE 脚本引擎原理
网络协议·学习·安全