最近,小千早上起来的时候,有同学反映后台的更新功能失效了,打开之后发现确实后台显示报错,如下图所示。

      后来排查了一下,发现这次请求确实没有发cookie信息到后台

      由于后台是用session存储用户的登录状态的,所以如果这里少了cookie信息的话,由于http本身是无状态的,导致不知道是哪个用户登录了,这里就报了ERROR_SESSION这样的错误,苦思冥想之后,各种搜索,突然发现了一点线索,就是这个 SameSite字段搞得怪。

      关于SameSite字段的介绍

      SameSite 是HTTP响应头 Set-Cookie 的属性之一。它允许您声明该Cookie是否仅限于第一方或者同一站点上下文。

      SameSite 接受下面三个值:

      Lax

      Cookies允许与顶级导航一起发送,并将与第三方网站发起的GET请求一起发送。这是浏览器中的默认值。

      Strict

      Cookies只会在第一方上下文中发送,不会与第三方网站发起的请求一起发送。

      None

      Cookie将在所有上下文中发送,即允许跨域发送。

      注意:以前 None 是默认值,但最近的浏览器版本将 Lax 作为默认值,以便对某些类型的跨站请求伪造 (CSRF) ***具有相当强的防御能力。

      问题解决

      由于更新接口这里的请求方式是 post,然后现在chrome浏览器里面的SameSite字段的默认值是Lax,导致cookie信息没有被发送到后台去,经过一轮搜索之后,发现要添加以下内容,才能完整解决这个问题

      由于我们现在后台的请求库是 axios,所以要在 axios这里添加一个配置项

      axios.defaults.withCredentials = true;//允许跨域携带cookie信息

      再修改一下chrome浏览器中SameSite字段的设置,具体步骤如下所示:

      在地址栏输入,chrome://flags

      然后输入 SameSite,设置以下三处为 Disabled

      接下来重启以下浏览器,然后再看一下发送的请求,这个时候发现cookie信息已经可以正确发送了,

      问题解决!!!

      本文来自千锋教育,转载请注明出处。

©著作权归作者所有:来自51CTO博客作者戏精程序媛的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 培训学前端编程有门槛吗?
  2. 一场由SameSite字段引发的悲剧
  3. 最新高清IT职业技能图谱:机器学习、架构师、大数据、前端、运维,全
  4. 你为什么选择程序员这个职业?
  5. Apache Spark 背后公司 Databricks 完成F轮融资,高达62亿美元估值
  6. 技术、平台、工具、语言&框架,年底应该这样把握技术方向!
  7. 性能测试和自动化测试选哪个?
  8. 请注意,容器技术圈已迈入后Kubernetes时代!
  9. 当别人用月薪去衡量程序员时,我们自己应该谈点理想

随机推荐

  1. 爬虫智能解析库 Readability 和 Newspape
  2. 这个面试官不讲套路,怎么上来就问个架构问
  3. Leader:这样的 Bug 你也写的出来???
  4. 面试官问了我分布式事务,我感觉他有想给我
  5. 持续输出|我的 2019 年
  6. IDEA Debug 无法进入断点的解决方法
  7. 这可能是 Python 面向对象编程的最佳实践
  8. 协作,才能更好的中断线程
  9. 别再造假数据了,来试试 Faker 这个库吧!
  10. 【开发者必看】移动应用趋势洞察白皮书-