最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 与Cookie有关的疑问

    正文概述 掘金(Ccccccindy)   2021-04-28   560

    其实,在平时的项目当中,早就遇到过很多关于Cookie的疑惑,我们先来从cookie是什么开始说起吧:

    Cookie是什么?

    HTTP协议是一个无状态协议,即它不会对发送的请求和响应状态进行保存,上一次请求和下一次请求是不是来自于同一个用户,它根本无法识别。但是,在项目当中,我们希望浏览器能够保持登录状态、记住购物车中的物品和数量等等,这就需要用到Cookie。

    cookie就是一种浏览器管理状态的一个文件。浏览器会存储set-cookie字段里面的信息,并在该请求之后的所有请求,都添加cookie头部信息将信息返回服务器。

    Cookie原理

    与Cookie有关的疑问

    在看这张图的时候,一直有几个疑惑:

    • 我在项目当中如何区分第一次请求?
    • 为什么没有看到返回set-cookie的请求?
    • set-cookie这个行为是客户端的意图还是服务器的意图呢?

    当我打开项目中的登录页面的时候,发现有一个login的请求,原来set-cookie在这个请求当中,cookie的意图就很明显了。

    客户端的意图是想要服务端记住自己的用户信息,通过登录接口向服务器提供用户名、密码等信息(第一次请求),服务端通过识别此次接口,意识到客户端想要自己记住某些信息,通过set-cookie字段将登录信息返回给客户端。

    接下来,客户端发送的所有请求都会携带cookie字段,以证明自己的身份(避免重复登录)。

    Cookie的限制

    Cookie是绑定在某一个域名上的。当设定了一个cookie时,再给创建它的域名发送请求时,就会包含这个cookie。

    例:当其中一个cookie的domain:.baidu.com(表示此cookie对baidu.com的所有二级域名都有效),那我访问xx.baidu.com的时候,都会携带此cookie。

    应用:可以实现一级域名下所有的网站共用同一个登录态。

    疑惑:一些cookie的expires(过期时间)为session,表示回话结束就删除cookie,为什么关掉浏览器还是会保存此cookie?

    cookie的expires(过期时间)为session,表示在浏览器关闭之后就将cookie删除,但是chrome浏览器会默认保存cookie,需要设置“退出 Chrome 时清除 Cookie 及网站数据”,退出浏览器之后所有的cookie信息都会被删除。

    Cookie属性

    与Cookie有关的疑问

    打开控制台Application中的cookies,就可以看到各个cookie字段的属性。

    Name

    cookie的名字,同一个域名下的cookie的名字不能相同,不然会被覆盖掉。

    场景:同一个域名下用同一个登录态,a.baidu.com切换账号,b.baidu.com的登录态也会随之改变。

    Value

    表示cookie的值,由于cookie规定是名称/值是不允许包含分号,逗号,空格的,所以为了不给用户到来麻烦,考虑服务器的兼容性,任何存储cookie的数据都应该被编码。

    Domain

    表示该cookie被绑定到某一个域名下,只要访问该域名,就会携带该cookie。 .baidu.com对于baidu.com的所有子域名都有效。但是相同一级域名下的不同二级域名之间是不能相互交换cookie的,比如domain为a.baidu.com下的cookie与domain为b.baidu.com下的cookie是不能共用的。

    Path

    对于指定域名下的某一个路径,发送该cookie,其他路径则不发送。

    默认为‘/’,对于该域下的所有路径都使用该cookie。

    可指定某一个cookie只有路径为 baidu.com/path/ 的时候才可发送。

    Expires

    该cookie的到期时间。默认情况下,cookie会在会话结束后就被删除,但是也可以设置成就算浏览器关闭也依然保存在浏览器内存中。

    除了代码中设置的过期时间,cookie的保存还会收到浏览器自定义设置的影响。上文有提到。

    Secure

    在此字段为true时,表示该cookie只有在使用https访问的时候才会发送。

    例:cookie只会发送给xxx.baidu.com 而不会发送给 xxx.baidu.com

    HttpOnly

    此字段设置为true时,表示该cookie不能通过js去获取(document.cookie),可以有效的防止xss(跨站脚本攻击)。

    SameSite

    由于之前在项目当中遇到过关于SameSite的问题,这里决定详细的说一下这个字段。

    SameSite点击这里(链接待补充...)


    起源地下载网 » 与Cookie有关的疑问

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元