Cookie 跨越问题

思考:做的前后端分离的项目,但是前后端也只是各一个服务器,但是登录是使用了token验证方式,所以就产生了疑问,为什么不用传统的session方式?因为后台只有一个,肯定不会有session不一致问题。但是实践下来,sessionid会丢失,接下来分析一下原因。

Cookie 的原理http://blog.csdn.net/gavin_john/article/details/51352114

再描述一下:

  • 浏览器发送http请求;
  • 客户端创建cookie,通过Http响应头的Set-Cookie项返回写回到浏览器;
  • 再次请求时,浏览器会自动带上该Web应用的cookie(cookie保存时会根据域和地址保存),通过Http请求头的Cookie字段带上;
  • 后端可以根据需要来读取cookie;

如果不设置过期时间,则该cookie再浏览器关闭时就不存在了,这种生命期为浏览会话期的cookie被称为会话cookie,会话cookie一般不保存在硬盘上而是内存中。存储在硬盘上的cookie可以在不同的浏览器进程间共享,而内存中的cookie,不同的浏览器有不同的处理方式。

Session原理http://blog.csdn.net/gavin_john/article/details/51376364

  • 浏览器第一次请求Web服务,服务器会创建一个session保存到内存中 ,并且获取到sessionid写入cookie中,不设置过期时间(会话cookie);
  • Http响应头Set-Cookie字段的cookie值写到浏览器中;
  • 下次请求时Http请求头通过cookie字段自动带上sessionid,然后服务器根据sessionid找到之前创建的session。

我所遇到的问题描述:
前后端分离,前段使用nignx部署的静态服务器,后端是java服务器,每次请求时前端都不带Cookie,导致无法识别Session,而且响应的Set-Cookie字段传递的JSESSIONID都不一样:


从图中看出每次http请求并没有自动带上该应用的cookie,这就跟cookie的存储有关系了

Cookie的保存:http://blog.csdn.net/luka2008/article/details/38385703/
cookie保存name:value的同时,会同时保存对应的domain和path
domain告诉浏览器当前要添加的cookie的域名归属,如果没有明确指明则默认为当前域名,比如我访问的地址为http://192.168.1.233:8206/selfmark/list.html ,则domain为192.168.1.233
Path告诉浏览器当前要添加的cookie的路径归属,没有指明则默认为当前路径,以上例子的路径为/selfmark ,

而在请求时,请求的服务器地址为http://192.168.1.229:8206,与刚刚保存的cookie域不一致,所以一直无法匹配到对应的cookie,后台无法获取到sessionid,所以会一直重新生成session,返回新的sessionid。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 作者:晚晴幽草轩www.jeffjade.com/2016/10/31/115-summary-of-cookie...
    饥人谷_Dylan阅读 1,261评论 0 51
  • 背景在HTTP协议的定义中,采用了一种机制来记录客户端和服务器端交互的信息,这种机制被称为cookie,cooki...
    时芥蓝阅读 2,455评论 1 17
  • 注:本文转载自前端大全 背景 在HTTP协议的定义中,采用了一种机制来记录客户端和服务器端交互的信息,这种机制被称...
    楠小忎阅读 733评论 0 0
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,783评论 11 349
  • 一 开着壁灯。橘黄的光线流淌着温存,被洁白的墙壁一打,圈出了床头些微朦胧的一片光晕。 方婧就裹在这片光晕里。与靓丽...
    一地月光阅读 736评论 0 1

友情链接更多精彩内容