学习通脚本无法看视频_代练通里面如果我用了脚本英雄会怎么样
学习通脚本无法看视频,代练通里面如果我用了脚本英雄会怎么样?
我专门在上面打单的,如果你用了禁止用的英雄,用一把扣5块,如果导致账号被封了的话,这样由于你用了这类英雄,嫌疑会增大很多。
学习通火狐插件怎么用?
学习通火狐插件用,火狐浏览器学习功能选择首页的学习功能就行了,这样用。
你开始玩今日头条创作后?
我就是题主说的每天一醒来就拿着手机首先打开头条,看消息、回评论,看看近期发的文的流量。因为头发每天发放收益的时间不固定,在没看到当天收益情况前,还会不停刷新一直到查看到收益为止。
但我不是题主说的玩头条玩上了瘾,我只是把头条当成我目前比较好的一条副业途径。我也没那么清高、雅致,更没有那份“上瘾”的自在,来头条就是带着目的、想获得收入,希望能缓解我目前比较拮据生活的巨大压力。
我没有什么流量密码,能够说我本身就是一个特别普通、毫无特色的人,所以微头条、文章什么的我就弄得少,主要就是做问答。
我在辞职做全职妈妈之前工作了十几年,做的也是跟媒体有关的工作,深知媒体的变幻莫测和不确定性,所以也没有把命运的齿轮全部安放在头条或者说自媒体上,这个风险太高、不确定性太大,但是它们确实是可以给我带来一点零星收入的,有时候几毛、有时候几块、有时候几十上百……不管多少,对于我来说,都是聊胜于无,多少都是收入,所以我会很认真的对待。做的关于“中重度发育迟缓孩子的早期干预”系列视频也是很真诚的在分享自己干预发育迟缓孩子三年及这三年我见过、接触过的很多案例的经验教训,秉持着只有淋过雨的人才不忍心看着别人淋雨,才会不自觉的想要为别人撑一把雨伞,那怕只是一把只能遮住头部的雨伞。
对于生育这件事,我们是有很好的计划的,并不会让家庭经济窘迫,但孩子在两岁多被确诊中重度发育迟缓、需要特教干预、需要家庭干预是我们始料未及的,但我们也没有因此抱怨、颓废,只是我需要改变原定的孩子上幼儿园我便去工作的计划,继续全职带着他,深度陪伴、担负起他早期干预的主要责任。
能够说,自从孩子开始干预后,不光是家庭开支成倍增加,主要是他的特教干预特别贵,我们还是给他安排的半天幼儿园、半天特教,所以幼儿园学费也是照常缴,另外我本人是要全程给他进行家庭干预的,无法全职工作,只能利用一些碎片时间做一些兼职。因为时间安排得太满,中间还有很多不确定的临时安排,从他开始进行早期干预后,我连一些脚本、创意方案的私单都没办法接,因为这些都是有时间限制的。
所以我玩头条,每天一起床就要打开app,查看、了解、分析,找问答,在做其他事情的时候打腹稿,有一点点空就查查资料、想想怎么写……像中毒一样的上瘾,更多的是很认真的在做这件事,很认真的对待这件事,因为这件事可以给我带来一点收入,那怕只有两块钱,也是我送孩子去特教机构的公立车费了不是么?!
华为服务器网卡灯不亮?
1、 检查备服务器硬件状况,在PC上打开浏览器输入BMC地址,输入用户名密码进入管理界面。查看服务器日志,服务器并没有产生任何告警信息。 2、 客户授权登录操作系统,并提供用户名和密码,通过终端登录操作系统。使用命令“ifconfig”查看网络接口信息,发现只有eth0和eth1。 [root@localhost ~] ifconfig eth0Link encap:EthernetHWaddr 00:0C:29:3D:80:8Binet addr:172.16.1.20Bcast:172.16.255.255Mask:255.255.0.0inet6 addr: fe80::20c:29ff:fe3d:808b/64 Scope:LinkUP BROADCAST RUNNING MULTICASTMTU:1500Metric:1RX packets:142 errors:0 dropped:0 overruns:0 frame:0TX packets:125 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:31258 (30.5 KiB)TX bytes:21512 (21.0 KiB) eth1Link encap:EthernetHWaddr 00:0C:29:3D:80:95inet addr:192.16.1.20Bcast:192.16.1.255Mask:255.255.255.0inet6 addr: fe80::20c:29ff:fe3d:8095/64 Scope:LinkUP BROADCAST RUNNING MULTICASTMTU:1500Metric:1RX packets:133 errors:0 dropped:0 overruns:0 frame:0TX packets:65 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:26106 (25.4 KiB)TX bytes:11965 (11.6 KiB) loLink encap:Local Loopbackinet addr:127.0.0.1Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNINGMTU:16436Metric:1RX packets:14 errors:0 dropped:0 overruns:0 frame:0TX packets:14 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:1146 (1.1 KiB)TX bytes:1146 (1.1 KiB) 3、进入"/etc/sysconfig/network-scripts"目录下查看配置文件。 [root@localhost network-scripts] ls ifcfg- Ifcfg-bond0ifcfg-eth0ifcfg-eth1ifcfg-eth2ifcfg-eth3ifcfg-lo 可以看出系统已经识别了eth2和eth3网卡。查看配置文件发现bond0配置文件有如下错误: [root@localhost network-scripts] cat ifcfg-bond0 DEVICE=bond0 BOOTPROTO=static IPADDR=192.168.1.20 NETMASK=2 3 GATEWAY=192.168.1.254 ONBOOT=yes 修改配置文件: [root@localhost network-scripts] cat ifcfg-bond0 DEVICE=bond0 BOOTPROTO=static IPADDR=192.168.1.20 NETMASK=255.255.255.0 GATEWAY=192.168.1.254 ONBOOT=yes 重启网络服务后,eth2和eth3指示灯正常。
根因
1、 扩展槽外接网卡松动。 2、 网卡类型不匹配。 3、 外接网卡硬件故障。 4、 网络接口配置文件错误。
解决方案
1、 检查备服务器硬件状况,在PC上打开浏览器输入BMC地址,输入用户名密码进入管理界面。查看服务器日志,服务器并没有产生任何告警信息。 2、 客户授权登录操作系统,并提供用户名和密码,通过终端登录操作系统。使用命令“ifconfig”查看网络接口信息,发现只有eth0和eth1。 [root@localhost ~] ifconfig eth0Link encap:EthernetHWaddr 00:0C:29:3D:80:8Binet addr:172.16.1.20Bcast:172.16.255.255Mask:255.255.0.0inet6 addr: fe80::20c:29ff:fe3d:808b/64 Scope:LinkUP BROADCAST RUNNING MULTICASTMTU:1500Metric:1RX packets:142 errors:0 dropped:0 overruns:0 frame:0TX packets:125 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:31258 (30.5 KiB)TX bytes:21512 (21.0 KiB) eth1Link encap:EthernetHWaddr 00:0C:29:3D:80:95inet addr:192.16.1.20Bcast:192.16.1.255Mask:255.255.255.0inet6 addr: fe80::20c:29ff:fe3d:8095/64 Scope:LinkUP BROADCAST RUNNING MULTICASTMTU:1500Metric:1RX packets:133 errors:0 dropped:0 overruns:0 frame:0TX packets:65 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:26106 (25.4 KiB)TX bytes:11965 (11.6 KiB) loLink encap:Local Loopbackinet addr:127.0.0.1Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNINGMTU:16436Metric:1RX packets:14 errors:0 dropped:0 overruns:0 frame:0TX packets:14 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:1146 (1.1 KiB)TX bytes:1146 (1.1 KiB) 3、进入"/etc/sysconfig/network-scripts"目录下查看配置文件。 [root@localhost network-scripts] ls ifcfg- Ifcfg-bond0ifcfg-eth0ifcfg-eth1ifcfg-eth2ifcfg-eth3ifcfg-lo 可以看出系统已经识别了eth2和eth3网卡。查看配置文件发现bond0配置文件有如下错误: [root@localhost network-scripts] cat ifcfg-bond0 DEVICE=bond0 BOOTPROTO=static IPADDR=192.168.1.20 NETMASK=2 3 GATEWAY=192.168.1.254 ONBOOT=yes 修改配置文件: [root@localhost network-scripts] cat ifcfg-bond0 DEVICE=bond0 BOOTPROTO=static IPADDR=192.168.1.20 NETMASK=255.255.255.0 GATEWAY=192.168.1.254 ONBOOT=yes 重启网络服务后,eth2和eth3指示灯正常。
1、 检查备服务器硬件状况,在PC上打开浏览器输入BMC地址,输入用户名密码进入管理界面。查看服务器日志,服务器并没有产生任何告警信息。 2、 客户授权登录操作系统,并提供用户名和密码,通过终端登录操作系统。使用命令“ifconfig”查看网络接口信息,发现只有eth0和eth1。 [root@localhost ~] ifconfig eth0Link encap:EthernetHWaddr 00:0C:29:3D:80:8Binet addr:172.16.1.20Bcast:172.16.255.255Mask:255.255.0.0inet6 addr: fe80::20c:29ff:fe3d:808b/64 Scope:LinkUP BROADCAST RUNNING MULTICASTMTU:1500Metric:1RX packets:142 errors:0 dropped:0 overruns:0 frame:0TX packets:125 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:31258 (30.5 KiB)TX bytes:21512 (21.0 KiB) eth1Link encap:EthernetHWaddr 00:0C:29:3D:80:95inet addr:192.16.1.20Bcast:192.16.1.255Mask:255.255.255.0inet6 addr: fe80::20c:29ff:fe3d:8095/64 Scope:LinkUP BROADCAST RUNNING MULTICASTMTU:1500Metric:1RX packets:133 errors:0 dropped:0 overruns:0 frame:0TX packets:65 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:26106 (25.4 KiB)TX bytes:11965 (11.6 KiB) loLink encap:Local Loopbackinet addr:127.0.0.1Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNINGMTU:16436Metric:1RX packets:14 errors:0 dropped:0 overruns:0 frame:0TX packets:14 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:1146 (1.1 KiB)TX bytes:1146 (1.1 KiB) 3、进入"/etc/sysconfig/network-scripts"目录下查看配置文件。 [root@localhost network-scripts] ls ifcfg- Ifcfg-bond0ifcfg-eth0ifcfg-eth1ifcfg-eth2ifcfg-eth3ifcfg-lo 可以看出系统已经识别了eth2和eth3网卡。查看配置文件发现bond0配置文件有如下错误: [root@localhost network-scripts] cat ifcfg-bond0 DEVICE=bond0 BOOTPROTO=static IPADDR=192.168.1.20 NETMASK=2 3 GATEWAY=192.168.1.254 ONBOOT=yes 修改配置文件: [root@localhost network-scripts] cat ifcfg-bond0 DEVICE=bond0 BOOTPROTO=static IPADDR=192.168.1.20 NETMASK=255.255.255.0 GATEWAY=192.168.1.254 ONBOOT=yes 重启网络服务后,eth2和eth3指示灯正常。
建议与
1、 遇到问题善于发现问题的原因,通过问题原因一步一步排查故障,这样处理故障的效率才能提升。 2、 工作中也遇到过其它序列服务器某网卡指示灯不亮,下架检查,使用ifconfig ethX up后,网卡指示灯正常,上架重启后指示灯又熄灭,原因是配置文件“ONBOOT”设置成“no”,将“no”改为“yes”后恢复正常。 3、 网卡灯不亮并不一定是硬件故障,大多时候是网络接口配置错误,发现类似问题应该先检查配置脚本。
使用场景有什么区别?
1. 网站交互体验升级作为网友的我们,每天都会使用浏览器来逛各种网站,来满足日常的工作生活需求。
现在的交互体验还是很丝滑的,但早期并非如此,而是一锤子买卖。
现在的交互体验还是很丝滑的,但早期并非如此,而是一锤子买卖。
1.1 无状态的 HTTP 协议无状态的 HTTP 协议是什么鬼?
1.1 无状态的 HTTP 协议无状态的 HTTP 协议是什么鬼?
HTTP 无状态协议,是指协议对于业务处理没有记忆能力,之前做了啥完全记不住。每次请求都是完全独立互不影响的,没有任何上下文信息。
HTTP 无状态协议,是指协议对于业务处理没有记忆能力,之前做了啥完全记不住。每次请求都是完全独立互不影响的,没有任何上下文信息。
缺少状态意味着如果后续处理需要前面的信息,则它必须重传关键信息,这样可能导致每次连接传送的数据量增大。
缺少状态意味着如果后续处理需要前面的信息,则它必须重传关键信息,这样可能导致每次连接传送的数据量增大。
如果大家没明白,可以想一下《夏洛特烦恼》里面的桥段:
如果大家没明白,可以想一下《夏洛特烦恼》里面的桥段:
大概明白了吧,假如一直用这种原生无状态的 HTTP 协议,我们每换一个页面可能就得重新登录一次,那还玩个球。
大概明白了吧,假如一直用这种原生无状态的 HTTP 协议,我们每换一个页面可能就得重新登录一次,那还玩个球。
所以必须要解决 HTTP 协议的无状态,提升网站的交互体验,否则星辰大海是去不了的。
所以必须要解决 HTTP 协议的无状态,提升网站的交互体验,否则星辰大海是去不了的。
1.2 解决之道整个事情交互的双方只有客户端和服务端,所以必然要在这两个当事者身上下手。
1.2 解决之道整个事情交互的双方只有客户端和服务端,所以必然要在这两个当事者身上下手。
客户端来买单
客户端来买单
客户端每次请求时把自己必要的信息封装发送给服务端,服务端查收处理一下就行。
客户端每次请求时把自己必要的信息封装发送给服务端,服务端查收处理一下就行。
服务端来买单
服务端来买单
客户端第一次请求之后,服务端就开始做记录,然后客户端在后续请求中只需要将最基本最少的信息发过来就行,不需要太多信息了。
客户端第一次请求之后,服务端就开始做记录,然后客户端在后续请求中只需要将最基本最少的信息发过来就行,不需要太多信息了。
2. Cookie方案Cookie 总是保存在客户端中。按在客户端中的存储位置,可分为内存 Cookie 和硬盘Cookie。
2. Cookie方案Cookie 总是保存在客户端中。按在客户端中的存储位置,可分为内存 Cookie 和硬盘Cookie。
内存 Cookie 由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。硬盘 Cookie 保存在硬盘里,有一个过期时间。除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。
内存 Cookie 由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。硬盘 Cookie 保存在硬盘里,有一个过期时间。除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。
2.1 Cookie 定义和作用HTTP Cookie(也叫 Web Cookie 或浏览器 Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据。它会在浏览器下次向同一服务器再发起请求时,被携带并发送到服务器上。
2.1 Cookie 定义和作用HTTP Cookie(也叫 Web Cookie 或浏览器 Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据。它会在浏览器下次向同一服务器再发起请求时,被携带并发送到服务器上。
通常 Cookie 用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie 使基于无状态的HTTP协议记录稳定的状态信息成为了可能。
通常 Cookie 用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie 使基于无状态的HTTP协议记录稳定的状态信息成为了可能。
Cookie 主要用于以下三个方面:
Cookie 主要用于以下三个方面:
会话状态管理(如用户登录状态、购物车等其它需要记录的信息)个性化设置(如用户自定义设置、主题等)浏览器行为跟踪(如跟踪分析用户行为等)2.2 服务端创建 Cookie当服务器收到 HTTP 请求时,服务器可以在响应头里面添加一个 Set-Cookie 选项。
会话状态管理(如用户登录状态、购物车等其它需要记录的信息)个性化设置(如用户自定义设置、主题等)浏览器行为跟踪(如跟踪分析用户行为等)2.2 服务端创建 Cookie当服务器收到 HTTP 请求时,服务器可以在响应头里面添加一个 Set-Cookie 选项。
浏览器收到响应后通常会保存下 Cookie,之后对该服务器每一次请求中都通过 Cookie 请求头部将 Cookie 信息发送给服务器。另外,Cookie 的过期时间、域、路径、有效期、适用站点都可以根据需要来指定。
浏览器收到响应后通常会保存下 Cookie,之后对该服务器每一次请求中都通过 Cookie 请求头部将 Cookie 信息发送给服务器。另外,Cookie 的过期时间、域、路径、有效期、适用站点都可以根据需要来指定。
2.3 B/S 的 Cookie 交互
2.3 B/S 的 Cookie 交互
服务器使用 Set-Cookie 响应头部向用户浏览器发送 Cookie信息。
服务器使用 Set-Cookie 响应头部向用户浏览器发送 Cookie信息。
一个简单的 Cookie 可能像这样:
一个简单的 Cookie 可能像这样:
Set-Cookie: <cookie名>=<cookie值> HTTP/1.0 200 OKContent-type: text/htmlSet-Cookie: yummy_cookie=chocoSet-Cookie: tasty_cookie=strawberry
客户端对该服务器发起的每一次新请求,浏览器都会将之前保存的Cookie信息通过 Cookie 请求头部再发送给服务器。
客户端对该服务器发起的每一次新请求,浏览器都会将之前保存的Cookie信息通过 Cookie 请求头部再发送给服务器。
GET /sample_page.html HTTP/1.1Host: www.example.orgCookie: yummy_cookie=choco; tasty_cookie=strawberry
我来访问下淘宝网,抓个包看看这个真实的过程:
我来访问下淘宝网,抓个包看看这个真实的过程:
2.4 存在的问题Cookie 常用来标记用户或授权会话,被浏览器发出之后可能被劫持,被用于非法行为,可能导致授权用户的会话受到攻击,因此存在安全问题。
2.4 存在的问题Cookie 常用来标记用户或授权会话,被浏览器发出之后可能被劫持,被用于非法行为,可能导致授权用户的会话受到攻击,因此存在安全问题。
还有一种情况就是跨站请求伪造 CSRF,简单来说 比如你在登录银行网站的同时,登录了一个钓鱼网站,在钓鱼网站进行某些操作时可能会获取银行网站相关的Cookie信息,向银行网站发起转账等非法行为。
还有一种情况就是跨站请求伪造 CSRF,简单来说 比如你在登录银行网站的同时,登录了一个钓鱼网站,在钓鱼网站进行某些操作时可能会获取银行网站相关的Cookie信息,向银行网站发起转账等非法行为。
跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的 Web 应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的 Web 应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
跨站请求攻击,简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。
跨站请求攻击,简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。
由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行。这利用了 Web 中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行。这利用了 Web 中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
不过这种情况有很多解决方法,特别对于银行这类金融性质的站点,用户的任何敏感操作都需要确认,并且敏感信息的 Cookie 只能拥有较短的生命周期。
不过这种情况有很多解决方法,特别对于银行这类金融性质的站点,用户的任何敏感操作都需要确认,并且敏感信息的 Cookie 只能拥有较短的生命周期。
同时 Cookie 有容量和数量的限制,每次都要发送很多信息带来额外的流量消耗、复杂的行为 Cookie 无法满足要求。
同时 Cookie 有容量和数量的限制,每次都要发送很多信息带来额外的流量消耗、复杂的行为 Cookie 无法满足要求。
特别注意:以上存在的问题只是 Cookie 被用于实现交互状态时存在的问题,但并不是说 Cookie 本身的问题。
特别注意:以上存在的问题只是 Cookie 被用于实现交互状态时存在的问题,但并不是说 Cookie 本身的问题。
试想一下:菜刀可以用来做菜,也可以被用来从事某些暴力行为,你能说菜刀应该被废除吗?
试想一下:菜刀可以用来做菜,也可以被用来从事某些暴力行为,你能说菜刀应该被废除吗?
3. Session 方案3.1 Session 机制的概念如果说 Cookie 是客户端行为,那么 Session 就是服务端行为。
3. Session 方案3.1 Session 机制的概念如果说 Cookie 是客户端行为,那么 Session 就是服务端行为。
Cookie 机制在最初和服务端完成交互后,保持状态所需的信息都将存储在客户端,后续直接读取发送给服务端进行交互。
Cookie 机制在最初和服务端完成交互后,保持状态所需的信息都将存储在客户端,后续直接读取发送给服务端进行交互。
Session 代表服务器与浏览器的一次会话过程,并且完全由服务端掌控,实现分配ID、会话信息存储、会话检索等功能。
Session 代表服务器与浏览器的一次会话过程,并且完全由服务端掌控,实现分配ID、会话信息存储、会话检索等功能。
Session 机制将用户的所有活动信息、上下文信息、登录信息等都存储在服务端,只是生成一个唯一标识 ID 发送给客户端,后续的交互将没有重复的用户信息传输,取而代之的是唯一标识 ID,暂且称之为 Session-ID 吧。
Session 机制将用户的所有活动信息、上下文信息、登录信息等都存储在服务端,只是生成一个唯一标识 ID 发送给客户端,后续的交互将没有重复的用户信息传输,取而代之的是唯一标识 ID,暂且称之为 Session-ID 吧。
3.2 简单的交互流程当客户端第一次请求 session 对象时候,服务器会为客户端创建一个 session,并将通过特殊算法算出一个 session 的 ID,用来标识该 session 对象;当浏览器下次请求别的资源的时候,浏览器会将 sessionID 放置到请求头中,服务器接收到请求后解析得到 sessionID,服务器找到该 id 的 session 来确定请求方的身份和一些上下文信息。3.3 Session 的实现方式首先明确一点,Session 和 Cookie 没有直接的关系。可以认为 Cookie 只是实现 Session 机制的一种方法途径而已,没有 Cookie 还可以用别的方法。
3.2 简单的交互流程当客户端第一次请求 session 对象时候,服务器会为客户端创建一个 session,并将通过特殊算法算出一个 session 的 ID,用来标识该 session 对象;当浏览器下次请求别的资源的时候,浏览器会将 sessionID 放置到请求头中,服务器接收到请求后解析得到 sessionID,服务器找到该 id 的 session 来确定请求方的身份和一些上下文信息。3.3 Session 的实现方式首先明确一点,Session 和 Cookie 没有直接的关系。可以认为 Cookie 只是实现 Session 机制的一种方法途径而已,没有 Cookie 还可以用别的方法。
Session和Cookie的关系就像加班和加班费的关系,看似关系很密切,实际上没啥关系。
Session和Cookie的关系就像加班和加班费的关系,看似关系很密切,实际上没啥关系。
Session 的实现主要两种方式:Cookie 与 URL 重写,而 Cookie 是首选方式。因为各种现代浏览器都默认开通 Cookie 功能,但是每种浏览器也都有允许 Cookie 失效的设置,因此对于 Session 机制来说还需要一个备胎。
Session 的实现主要两种方式:Cookie 与 URL 重写,而 Cookie 是首选方式。因为各种现代浏览器都默认开通 Cookie 功能,但是每种浏览器也都有允许 Cookie 失效的设置,因此对于 Session 机制来说还需要一个备胎。
将会话标识号以参数形式附加在超链接的URL地址后面的技术称为 URL 重写
将会话标识号以参数形式附加在超链接的URL地址后面的技术称为 URL 重写
原始 URL:
原始 URL:
http://taobao.com/getitem?name=baymax&action=buy
重写后的 URL:
重写后的 URL:
http://taobao.com/getitem?sessionid=1wui87htentg&?name=baymax&action=buy
3.4 存在的问题
3.4 存在的问题
由于 Session 信息是存储在服务端的,因此如果用户量很大的场景,Session 信息占用的空间就不容忽视。
由于 Session 信息是存储在服务端的,因此如果用户量很大的场景,Session 信息占用的空间就不容忽视。
对于大型网站必然是集群化&分布式的服务器配置。如果 Session 信息是存储在本地的,那么由于负载均衡的作用,原来请求机器 A 并且存储了 Session 信息,下一次请求可能到了机器 B,此时机器 B 上并没有 Session 信息。
对于大型网站必然是集群化&分布式的服务器配置。如果 Session 信息是存储在本地的,那么由于负载均衡的作用,原来请求机器 A 并且存储了 Session 信息,下一次请求可能到了机器 B,此时机器 B 上并没有 Session 信息。
这种情况下要么在 B 机器重复创建造成浪费,要么引入高可用的 Session 集群方案,引入 Session 代理实现信息共享,要么实现定制化哈希到集群 A,这样做其实就有些复杂了
这种情况下要么在 B 机器重复创建造成浪费,要么引入高可用的 Session 集群方案,引入 Session 代理实现信息共享,要么实现定制化哈希到集群 A,这样做其实就有些复杂了
4. Token 方案Token 是令牌的意思,由服务端生成并发放给客户端,是一种具有时效性的验证身份的手段。
4. Token 方案Token 是令牌的意思,由服务端生成并发放给客户端,是一种具有时效性的验证身份的手段。
Token 避免了 Session 机制带来的海量信息存储问题,也避免了 Cookie 机制的一些安全性问题,在现代移动互联网场景、跨域访问等场景有广泛的用途。
Token 避免了 Session 机制带来的海量信息存储问题,也避免了 Cookie 机制的一些安全性问题,在现代移动互联网场景、跨域访问等场景有广泛的用途。
4.1 简单的交互流程
4.1 简单的交互流程
客户端将用户的账号和密码提交给服务器;服务器对其进行校验,通过则生成一个 token 值返回给客户端,作为后续的请求交互身份令牌;客户端拿到服务端返回的 token 值后,可将其保存在本地,以后每次请求服务器时都携带该 token,提交给服务器进行身份校验;服务器接收到请求后,解析关键信息,再根据相同的加密算法、密钥、用户参数生成 sign 与客户端的 sign 进行对比,一致则通过,否则拒绝服务;验证通过之后,服务端就能根据该 Token 中的 uid 获取对应的用户信息,进行业务请求的响应。4.2 Token 的设计思想以 JSON Web Token(JWT)为例,Token主要由三部分组成:
客户端将用户的账号和密码提交给服务器;服务器对其进行校验,通过则生成一个 token 值返回给客户端,作为后续的请求交互身份令牌;客户端拿到服务端返回的 token 值后,可将其保存在本地,以后每次请求服务器时都携带该 token,提交给服务器进行身份校验;服务器接收到请求后,解析关键信息,再根据相同的加密算法、密钥、用户参数生成 sign 与客户端的 sign 进行对比,一致则通过,否则拒绝服务;验证通过之后,服务端就能根据该 Token 中的 uid 获取对应的用户信息,进行业务请求的响应。4.2 Token 的设计思想以 JSON Web Token(JWT)为例,Token主要由三部分组成:
Header 头部信息:记录了使用的加密算法信息;Payload 净荷信息:记录了用户信息和过期时间等;Signature 签名信息:根据 header 中的加密算法和 payload 中的用户信息以及密钥key来生成,是服务端验证服务端的重要依据。
Header 头部信息:记录了使用的加密算法信息;Payload 净荷信息:记录了用户信息和过期时间等;Signature 签名信息:根据 header 中的加密算法和 payload 中的用户信息以及密钥key来生成,是服务端验证服务端的重要依据。
header 和 payload 的信息不做加密,只做一般的 base64 编码。服务端收到 token 后剥离出 header 和 payload 获取算法、用户、过期时间等信息,然后根据自己的加密密钥来生成 sign,并与客户端传来的 sign 进行一致性对比,来确定客户端的身份合法性。
header 和 payload 的信息不做加密,只做一般的 base64 编码。服务端收到 token 后剥离出 header 和 payload 获取算法、用户、过期时间等信息,然后根据自己的加密密钥来生成 sign,并与客户端传来的 sign 进行一致性对比,来确定客户端的身份合法性。
这样就实现了用 CPU 加解密的时间换取存储空间,同时服务端密钥的重要性就显而易见,一旦泄露整个机制就崩塌了,这个时候就有待考虑 HTTPS 了。
这样就实现了用 CPU 加解密的时间换取存储空间,同时服务端密钥的重要性就显而易见,一旦泄露整个机制就崩塌了,这个时候就有待考虑 HTTPS 了。
4.3 Token 方案的特点Token 可以跨站共享,实现单点登录;Token 机制无需太多存储空间。Token 包含了用户的信息,只需在客户端存储状态信息即可,对于服务端的扩展性很好;Token 机制的安全性依赖于服务端加密算法和密钥的安全性;Token 机制也不是万金油。5. Cookie、Session、Token 这三者是不同发展阶段的产物,并且各有优缺点,三者也没有明显的对立关系,反而常常结伴出现,这也是容易被混淆的原因。
4.3 Token 方案的特点Token 可以跨站共享,实现单点登录;Token 机制无需太多存储空间。Token 包含了用户的信息,只需在客户端存储状态信息即可,对于服务端的扩展性很好;Token 机制的安全性依赖于服务端加密算法和密钥的安全性;Token 机制也不是万金油。5. Cookie、Session、Token 这三者是不同发展阶段的产物,并且各有优缺点,三者也没有明显的对立关系,反而常常结伴出现,这也是容易被混淆的原因。
Cookie 侧重于信息的存储,主要是客户端行为。Session 和 Token 侧重于身份验证,主要是服务端行为。
Cookie 侧重于信息的存储,主要是客户端行为。Session 和 Token 侧重于身份验证,主要是服务端行为。
三者方案在很多场景都还有生命力,了解场景才能选择合适的方案。
三者方案在很多场景都还有生命力,了解场景才能选择合适的方案。
本文分享自华为云社区《Cookie、Session、Token 背后的故事-云社区-华为云》,作者: 龙哥手记。