文档章节

http cookie的domain使用

o
 osc_y8yehimr
发布于 2019/03/20 16:22
字数 633
阅读 0
收藏 0

精选30+云产品,助力企业轻松上云!>>>

  问题描述

  最近遇到了一个因cookie domain设置不正确导致公司自研的分布式session组件无法生效的问题。

  公司自研的这套分布式session组件依赖于设置在cookie中的sessionId,请求到后端时经过特定的filter处理,当发现cookie中不存在指定的sessionId值时,会重新生成一个sessionId种入到cookie中,如果存在就根据该sessionId的值从redis缓存中取出该值对应的session内容。

  但是组内一个服务接入这个组件自测的时候,发现每次请求都无法取到上一次session的值,排查后发现每一次请求中根本没有带上上一次cookie中种下的sessionId,导致每次请求否会生成一个新的sessionId。而每一次请求没有带上上一次请求的sessionId的原因在于该cookie值得domain设置不符合要求,导致cookie设置失败。

  1、当请求到后端时,发现cookie中没有sessionId,会重新生成sessionId并种到cookie中,如下图:

  

 

  2、请求没有带上上一次请求响应时设置在cookie中的sessionId,并重新生成sessionId,如下图:

  

 

  问题定位

  cookie中sessionId的domain设置不符合规范,导致该cookie值设置失败。虽然在浏览器中看到请求的相应中已经设置了cookie sessionId,但是这并不代表该cookie值设置成功,这仅仅表示了设置cookie值的动作。

  问题分析

  cookie domain的设置规则

  只能设置为当前域名及其父域名,否则无效。

  例如,一个服务的域名为dev.service.abc.com,cookie的domain设置可以为:dev.service.abc.com、.service.abc.com、.abc.com

  不能设置为.com、.cn、.net等

  不设置domain,默认domain为当前域名

  结合问题

  服务代码中该sessionId的cookie domain设置为如.abc的形式,和cookie domain设置为.com、.cn、.net是一个道理,不符合cookie domain的设置规则,这样设置cookie是无效的,因此请求无法带上一次设置的sessionId,因此上一次sessionId根据就没有成功种入到cookie中。

  cookie domain使用扩展

  Cookie中domain的一个最为重要和常见的作用就是实现cookie跨域共享。

  在qiye.epro.sogou.com域下种下cookie:cookieName=cookieValue,domain=.sogou.com,这样:其他以.sogou.com为后缀的域名对应的服务就可以获取到该cookie信息,例如: qyyun.epro.sogou.com、 h5-qiye.epro.sogou.com、www.sogou.com等,实现了cookie信息的跨域共享。

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
HTTP Cookie header 中set-cookie格式

Cookie相关的Http头 有 两个Http头部和Cookie有关:Set-Cookie和Cookie。 Set-Cookie由服务器发送,它包含在响应请求的头部中。它用于在客户端创建一个Cookie Cookie头由客户端发送,包含在H...

osc_3md1xrlp
2018/08/18
3
0
Http 状态管理机制(cookie) (译文)

因为某次开发中遇到了cookie的坑,所以决心认真看cookie的机制,首选RFC。原文链接 rfc HTTP State Management Mechanism 1997 有点老其实。 HTTP状态管理机制 摘要 这篇文档是为HTTP reques...

zhoushx3
2019/09/29
0
0
基于Nginx解决前端访问服务器跨域问题(Session和cookie无效)

问题背景 这两天遇到一个这样的需求: 有两个项目a和b,在a项目中有页面需要调用b中的接口,两项目的域名不同,分别为a.com, b.com。这时候如果直接调用,显然跨域了。一番折腾之后,问题解决...

聚优云惠
04/29
0
0
JavaScript Cookie 的正确用法

用Javascript操作cookie是通过document对象下的cookie属性,其实document.cookie就是字符串,所以我们使用它时,可以像使用字符串一样,可以使用字符串的所有方法,只不过这个字符串需要一个...

kisshua
2012/06/06
624
1
HostOnly Cookie 及Js对cookie操作

HostOnly Cookie 要理解HttpOnly的作用,要先弄懂XSS攻击,即跨站脚本攻击,大伙可以Google一下看看XSS到底是什么,来自wikipedia的解释: 跨网站脚本(Cross-site scripting,通常简称为XSS...

osc_0i8c6s1z
2018/03/19
8
0

没有更多内容

加载失败,请刷新页面

加载更多

Git本地分支和远程分支关联

转载:https://blog.csdn.net/cherishhere/article/details/52606884 转载:https://blog.zengrong.net/post/1746.html 转载:https://blog.csdn.net/xinghuowuzhao/article/details/78663526 转......

osc_ur9jjorb
21分钟前
10
0
移动应用测试方法与思路

标签(空格分隔): 浅谈移动应用测试方法与思路 在 GUI 自动化测试这个系列,我讲了很多基于浏览器的业务测试的内容,你可能会说,现在移动 App 大行其道,对移动应用测试的方法和思路才更重...

osc_avdbd8s3
22分钟前
9
0
搜索所有Git历史记录中的字符串? [重复] - Search all of Git history for a string? [duplicate]

问题: This question already has an answer here: 这个问题在这里已有答案: How to grep Git commit diffs or contents for a certain word? 如何grep Git为某个单词提交差异或内容? 8 ...

fyin1314
23分钟前
12
0
css实现圆形倒计时效果

实现思想: 1.最外层包裹内部的div1(.box) 2.内部左右两边div2(.left_box和.right_box),宽度为div1的一半,通过overflow:hidden隐藏其内部的div 3.在左右两个div2中各有一个div3(.left_item...

osc_sg74u54s
24分钟前
7
0
python语言中threading.Thread类的使用方法

1. 编程语言里面的任务和线程是很重要的一个功能。在python里面,线程的创建有两种方式,其一使用Thread类创建 # 导入Python标准库中的Thread模块 from threading import Thread # 创建一...

osc_q5urtsdm
25分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部