cookie的domain属性

cookie的domain属性欢迎大家光临我的个人博客,详戳https://545longgege.top/最近在改一个bug单时,有个问题涉及到了cookie的domain属性,大致场景是由于不同的服务页面出现了同名的cookie但是domain域不同,导致出现了不可思议的bug。于是查询与cookie的domain属性相关的资料并记录之。1、什么是Cookie?Cookie是由W3C组织提出,最…

大家好,又见面了,我是你们的朋友全栈君。

欢迎大家光临我的个人博客,详戳    https://545longgege.top/

最近在改一个bug单时,有个问题涉及到了cookie的domain属性,大致场景是由于不同的服务页面出现了同名的cookie但是domain域不同,导致出现了不可思议的bug。于是查询与cookie的domain属性相关的资料并记录之。

1、什么是Cookie?

    Cookie是由W3C组织提出,最早由NetScape社区发展的一种机制。

    Cookie是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个cookie。

    Cookie的作用就是用于解决”如何记录客户端的用户信息”:

        ①当用户访问web页面时,他的名字可以记录在Cookie中。

        ②在用户下一次访问该页面时,可以在Cookie中读取用户访问记录。

    Cookie实际上是一小段文本信息(上限为4kb)。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器可以把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务还可以根据需要修改Cookie的内容。

2、Cookie的属性

属性名 描述
name Cookie的名称,Cookie一旦创建,名称便不可更改
value Cookie的值,如果值为Unicode字符,需要为字符编码。如果为二进制数据,则需要使用BASE64编码
maxAge Cookie失效的时间,单位秒。如果为整数,则该Cookie在maxAge秒后失效。如果为负数,该Cookie为临时Cookie,关闭浏览器即失效,浏览器也不会以任何形式保存该Cookie。如果为0,表示删除该Cookie。默认为-1。
secure 该Cookie是否仅被使用安全协议传输。安全协议。安全协议有HTTPS,SSL等,在网络上传输数据之前先将数据加密。默认为false。
path Cookie的使用路径。如果设置为“/sessionWeb/”,则只有contextPath为“/sessionWeb”的程序可以访问该Cookie。如果设置为“/”,则本域名下contextPath都可以访问该Cookie。注意最后一个字符必须为“/”。
domain 可以访问该Cookie的域名。如果设置为“.google.com”,则所有以“google.com”结尾的域名都可以访问该Cookie。注意第一个字符必须为“.”。
comment 该Cookie的用处说明,浏览器显示Cookie信息的时候显示该说明。
version Cookie使用的版本号。0表示遵循Netscape的Cookie规范,1表示遵循W3C的RFC 2109规范

例如:

document.cookie = "username=Darren;path=/;domain=.csdn.net"

将上面代码复制在console控制台中输入,回车便可以在浏览器的cookie中查到username被存在Domain为'”.csdn.net’的域名下。

cookie的domain属性

3、Cookie的Domain属性

    我们重点说一下这个Domain属性。一般在实现单点登录的时候会经常用到这个属性,通过在父级域设置Cookie,然后在各个子级域拿到存在父级域中的Cookie值。比如刚才设置的username属性,在blog.csdn.net下同样可以访问到,用户不用重新登录就可以拿到第一次登录进来时候的用户信息,因为这些用户信息都是存在父级域”.csdn.net”下面,其他页面也可以拿到。cookie的domain属性

所谓的单点登录是指用户在一个站点如www.studyez.com登录后切换到另一个站点communty.studyez.com时也自动 被community的Server判断为已经登录,反过来,只要用户在community.studyez.com登出后,切换到 www.studyez.com时后www的Server也会判断到这一用户已经登出。

 因此,当在”blog.csdn.net”这个域名下存入一个Cookie;如:

document.cookie = "blogCookie=blog;path=/;domain=.blog.csdn.net";

然后你会发现在mp.csdn.net下看不到blogCookie这个属性。这个就是所谓的Cookie跨域的问题。 

补充说明:

设置domain的值,前面带点和不带点的区别:

1. 带点:任何subdomain都可以访问,包括父domain

2. 不带点:只有完全一样的域名才能访问,subdomain不能访问(但在IE下比较特殊,它支持subdomain访问)

总结:domain表示的是cookie所在的域,默认为请求的地址,如网址为www.study.com/study,那么domain默认为www.study.com。而跨域访问,如域A为t1.study.com,域B为t2.study.com,那么在域A生产一个令域A和域B都能访问的cookie就要将该cookie的domain设置为.study.com;如果要在域A生产一个令域A不能访问而域B能访问的cookie就要将该cookie的domain设置为t2.study.com。注意:一般在域名前是需要加一个”.”的,如”domain=.study.com”。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157493.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • YUM源仓库配置_开源仓库

    YUM源仓库配置_开源仓库YUM源仓库配置YUM源仓库配置YUM简介软件仓库的提供方式RPM软件包的来源以ftp方式构建YUM仓库1.在服务器上安装ftp2.命名服务器地址3.查看挂载4.进行匿名登录设置5.在一个客户机上登录安装ftp6.查看文件上传是否成功7.在服务器上查看yum源文件8.移动所有源文件到backup中,并创建新的目录源文件f.repo9.查看配置文件10.移动所有挂载目录下的文件到ftp下11.清除所有缓存,建立缓存12.安装ftp进行测试,ftp方式的yum仓库源是否可行YUM常用命令1.查询软件包2.查询

    2025年7月10日
    3
  • rinetd安装

    第一步:下载安装包wgethttp://www.boutell.com/rinetd/http/rinetd.tar.gz第二步解压安装包tar-zxvfrinetd.tar.gz第三步进入rinetd修改 rinetd.c文件bindPort>=65536    变个更为  bindPort>=65535connectPort

    2022年4月8日
    197
  • vga转HDMI与hdmi转VGA区别

    vga转HDMI与hdmi转VGA区别

    2022年2月7日
    164
  • 程序发生崩溃dump文件_failed to create dump file

    程序发生崩溃dump文件_failed to create dump file之前在winxp和win7没有问题,用了win10就出问题了.解决办法:VirtualProtect函数使用VirtualProtectEx代替即可!所有代码如下:#ifndef__DUMP_H__#define__DUMP_H__#include<stdlib.h>#include<stdio.h>#include<ostream>#if…

    2025年11月3日
    3
  • java如何调用第三方接口

    java如何调用第三方接口最近在做一个项目,因一些机制问题,需要我用java代码调用第三方接口。因其接口使用的是@RequestBody注入访问对象的,@RequestBody接受收的是一个json格式的字符串,一定是一个字符串。类似于:{“pageNumber”:1,“pageSize”:10}这种json字符串访问方式。要想在java后端代码中访问第三方接口,首先引入maven包。<dependency><groupId>org.codehaus.jackson

    2022年5月28日
    249
  • 外包公司做测试怎么样_北京软件测试公司有哪些

    外包公司做测试怎么样_北京软件测试公司有哪些一、什么是软件测试外包随着最近10年创业风气的发起,已经涌起创业项目外包公司的兴起,已经不仅仅局限为了降低成本,更多的是为了解决自己雇佣技术人员或者无法管理技术人员的难题。那么外包是什么意思呢?似乎大家对外包都闻之色变!这里我们详细的认识一下什么是外包?外包类似中介派遣公司或者叫做劳务输出公司。就是我们公司把你招聘进来,但是又把你派到其他公司(甲方)工作。但是最终你的劳务合同是在外包公司,和甲方没关系。例如:面试去软通动力的测试岗位,最后确外派去今日头条上班!这种情况就属于外包公司;

    2025年7月1日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号