前几天写了个小项目,本地跑的好好的,部署到服务器上也正常。最近在服务器上跑,出幺蛾子了。程序突然报错,本应该从httpServletRequest.getSession()中写入和读出的,但是却读不出,结果为null。开启远程调式,发现程序确实读取不到httpServletRequest.getSession()中的值。

会到本地计算机重新跑程序,程序正常,debug发现同样的值在本地跑可以获取到。
以为是打包jar出问题了,就重新编译打包,并且现在本地计算机上运行jar包。同样显示正常,再次部署到服务器。见鬼了,服务器还是不行,程序读取不到session中的值。既然本地的jar可以正常运行,那么jar打包应该正确。session是依靠cookie的,会不会是跨域的问题?

但是程序中已经标注了allowCredentials = “true”,在前端代码中也设置了xhrFields:{withCredentials:true}要求携带cookie发送请求。

查看程序在本地时cookie情况:

第一次响应是返回cookie的,tomcat的sessionID叫JSESSIONID。
第二次请求携带了cookie。

查看程序在服务器上的运行:
第一次请求没有Cookie

第一次请求服务器同样返回Cookie

但是在随后的请求中,浏览器并没有将服务器给的Cookie携带发送。和第一次请求一摸一样。问题找到了,浏览器没有发送Cookie,导致随后的操作,服务器不知道之前的状态,读取不到对应的参数。导致报错。

问题分析:但是相同的代码,同样的浏览器,为社么在本地计算机就可以发送Cookie,但是在云服务器上就不发送。这里就和后端代码和前端没有关系了,一定是浏览器本身的设置问题。

原来是从Chrome51开始,增加了SameSite属性。详细请看SameSite

简单的说就是SameSite属性,分为3类。Strict、Lax和None。以前发送Cookie是服务器设置allowCredentials:true以及前端代码中设置withCredentials:true。但是现在即使都设置了,SameSite不对也不会发送。

1、Strict最为严格,完全禁止第三方 Cookie,跨站点时,任何情况下都不会发送 Cookie。

2、Lax规则稍稍放宽,大多数情况也是不发送第三方 Cookie,但是导航到目标网址的 Get 请求除外

3、Chrome 计划将Lax变为默认设置。这时,网站可以选择显式关闭SameSite属性,将其设为None。不过,前提是必须同时设置Secure属性(Cookie 只能通过 HTTPS 协议发送),否则无效

解决办法就是设置成None模式,这样Cookie通过Https发送。
在Microsoft Edge中打开属性,在目标(T)后面增加

 --disable-features=SameSiteByDefaultCookies,CookiesWithoutSameSiteMustBeSecure

即可。注意是在”“外面加哦。

浏览器不发送Cookie相关推荐

  1. java 发送cookie_Java如何在Servlet中发送cookie?

    Cookie是Web服务器发送给浏览器的一条信息.然后,浏览器将该信息返回到Web服务器.这是某些网页记住您以前访问的方式.例如,一个电子商务网站可能使用cookie来记住您放置在在线购物车中的项目. ...

  2. Web安全笔记-Fidder与浏览器找关键Cookie(Cookie劫持前的准备)

    目录 使用Fiddler的Replay and Edit找关键Cookie 使用浏览器找关键Cookie 使用Fiddler的Replay and Edit找关键Cookie 如下图: 通过修改Coo ...

  3. selenium+java发送cookie,绕过验证码登录

    这里用蜗牛学院的网页为例,http://www.woniuxy.com/ Cookie的处理分为: 服务器向客户端发送cookie 浏览器将cookie保存 之后每次http请求浏览器都会将cooki ...

  4. 解决新版chrome浏览器SameSite属性cookie拦截问题

    解决新版chrome浏览器SameSite属性cookie拦截问题 问题现象: 由于升级了新版chrome浏览器后,发现系统正常iframe嵌套.AJAX,Image从以前的跨站会发送三方 Cooki ...

  5. Cookie编程基础:检查浏览器是否接受Cookie

    Cookie编程基础:检查浏览器是否接受Cookie 提要:一种确定浏览器是否接受 Cookie 的方法是先编写一个 Cookie,然后再尝试读取这个 Cookie.如果不能读取这个Cookie,则可 ...

  6. 计算机浏览器存储技术cookie、sessionStorage、localStorage

    HTTP无状态协议是指协议对于事务处理没有记忆能力. 会话跟踪 协议的状态是指下一次传输可以"记住"这次传输信息的能力,无状态是指同一个会话(注意什么叫同一个会话) 的连续两个请求 ...

  7. 浏览器储存之Cookie、sessionStorage、localStorage和indexedDB区别与详解

    一般在项目中我们逗需要把信息存储在本地的情况,比如权限验证的token.用户信息.埋点计数.客户配置的皮肤信息或语言种类等,我们可以暂存一下避免浏览器不必要的请求和客户多余操作,较少请求从而提高性能以 ...

  8. 微信内置浏览器中的cookie很诡异呀

    微信内置浏览器中的cookie很诡异呀 这是设置和删除COOKIE的代码 function set_cookie($var ,$value = '' ,$expire = 0){ $path = '/ ...

  9. 手机浏览器无法获取COOKIE的原因

    为什么80%的码农都做不了架构师?>>>    手机浏览器上无法使用cookie,肯能是 1. 浏览器禁用 COOKIE ,这个简单开启即可. 2. 可能是手机所在时区有问题,将CO ...

最新文章

  1. python逻辑型数据也叫什么_Python的数据类型与数据结构
  2. IDEA中每次拷贝一个项目的时候必须标记一下配置文件resources,否则报错
  3. ArrayList,LinkedList,Vector的异同点
  4. boost::disjoint_sets_with_storage用法的测试程序
  5. HDU 1394 线段树or 树状数组~
  6. linux 关闭防火墙 centos7,centos7关闭防火墙和selinux
  7. 关于token你需要知道的
  8. select函数fdwrite用法_NumPy 分段函数
  9. nlp任务分类及适用方法
  10. 计算机网络部分英文缩写汇总
  11. 【校招VIP】测试脚本语言之系统状态(内存、网络)
  12. 软件设计师----计算机网络
  13. 计算机设备选型原则,计算机中通信技术的选用应遵循什么原则
  14. 使用命令行检查python语法错误和Debug
  15. gitee如何删除仓库
  16. 中班音乐活动 机器人_中班下学期音乐《机器人》活动反思
  17. 脉搏信号处理系统含Matlab源码
  18. 超能陆战队之大白制作过程
  19. JAVA数据结构:双向链表
  20. Mac 软件专题:教学参考工具软件-外语/医学/天文/地理/数学等

热门文章

  1. 一直以为bras是bra的复数形式【囧】
  2. GitLab-CE 下载安装及使用
  3. 地质勘测软件surfer使用教程:以 3D 视图查看钻孔图层
  4. 父亲30岁,孩子6岁。多少年后父亲年龄是孩子两倍
  5. mac下创建第一个flutter项目以及遇到的问题
  6. python 13位时间戳
  7. 我的世界 命令方块大炮
  8. 连载01:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)
  9. LittleVGL (LVGL)干货入门教程二之LVGL的输入设备(indev)API对接。
  10. 操作系统原理学习笔记(二十一)-对换