1、domain参数设置错误:在设置cookie的domain参数时,需要确保它的值是正确的域名格式,比如example.com。如果domain参数设置不正确,浏览器是不会接受该cookie的。
2、设置的域名与当前域名不匹配:如果您在本地开发环境中设置了cookie的domain参数,但是在实际生产环境中使用了不同的域名,那么cookie就不能跨域传递了。
3、浏览器设置阻止了cookie:有些浏览器可能会阻止cookie的设置,可以检查浏览器的cookie设置,确保它们没有被禁用。
一个域名下面可能存在着很多个cookie对象,cookie具有多个属性:
非顶级域名,如二级域名或者三级域名,设置的cookie的domain只能为顶级域名或者二级域名或者三级域名本身,不能设置其他二级域名的cookie,否则cookie无法生成。
顶级域名只能设置domain为顶级域名,不能设置为二级域名或者三级域名,否则cookie无法生成。
二级域名能读取设置了domain为顶级域名或者自身的cookie,不能读取其他二级域名domain的cookie。所以要想cookie在多个二级域名中共享,需要设置domain为顶级域名,这样就可以在所有二级域名里面或者到这个cookie的值了。
顶级域名只能获取到domain设置为顶级域名的cookie,其他domain设置为二级域名的无法获取。
我们知道Cookie的属性有很多,其中有一个属性是路径。有些人认为Cookie的路径指的是Cookie在客户端的保存路径,其实并不是。 Cookie的路径是在服务器创建Cookie时设置的,它的作用是决定浏览器访问服务器的某个资源时,需要将浏览器端保存的那些Cookie归还给服务器 。
正常的cookie只能在一个应用中共享,即一个cookie只能由创建它的应用获得。
设置cookie.setPath("/")假设本机tomcat/webapp下面有两个应用:cas和webapp_b:
设置cookie.setDomain(".jszx.com")假设 A机所在的域:home.langchao.com,A有应用cas B机所在的域:jszx.com,B有应用webapp_b :
推荐阅读
当用户第一次访问并登陆一个网站的时候,cookie的设置以及发送会经历以下4个阶段:
客户端发送一个请求到服务器
服务器发送一个httpResponse响应到客户端,其中包含set-cookie的头部
客户端保存cookie,之后向服务器发送请求时,httpRequest请求中会包含一个Cookie的头部
服务器返回响应数据
cookie的域名
Cookie是不可以跨域名的,隐私安全机制禁止网站非法获取其他网站的Cookie。
正常情况下,同一个以及域名下的两个二级域名也不能交互Cookie,比如test1.jianshu.com与test2.jianshu.com,因为二者的域名不完全相同,如果想要jianshu.com名下的二级域名都可以使用该Cookie,需要设置Cookie的domain参数为jianshu.com,这样使用test1.jianshu.com和test2.jianshu.com就能访问同一个域名了。
下面是Chrome浏览器存储的一个cookie信息
设置的过程,服务器设置cookie的时候,需要指定cookie的domain,当domain与当前host的匹配不上的时候,responseHeader里的set-cookie不会设置成功。这也就是cookie不支持跨域问题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)