一篇文章彻底解决跨域设置cookie问题!

大家好我是雪人~~⛄

之前做项目的时候发现后端传过来的 SetCookie 不能正常在浏览器中使用。

是因为谷歌浏览器新版本Chrome 80将Cookie的SameSite属性默认值由None变为Lax。

接下来带大家解决该问题。

原理讲解

  • 我们可以看到Cookie有以下属性

Cookie属性

名称:Cookie的name。

:Cookie的value。

Domain: Cookie的域。如果设成xxx.com(一级域名),那么子域名x.xxx.com(二级域名),都可以使用xxx.com的Cookie。

Path:Cookie的路径。如果设为/,则同域名全部路径均可使用该Cookie。如果设为/xxx/,则只有路径为/xxx/可以使用该Cookie。

Expires / Max-Age:Cookie的超时时间。如果值为时间,则在到达指定时间后Cookie失效。如果值为Session(会话),Cookie会同Session一起失效,当整个浏览器关闭的时候Cookie失效。

Size:Cookie的大小。

HttpOnly:值为true时,Cookie只会在Http请求头中存在,不能通过doucment.cookie(JavaScript)访问Cookie。

Secure:值为true时,只能通过https来传输Cookie。

SameSite

  • 值为Strict,完全禁止第三方Cookie,跨站时无法使用Cookie。
  • 值为Lax,允许在跨站时使用Get请求携带Cookie,下面有一个表格介绍Lax的Cookie使用情况。
  • 值为None,允许跨站跨域使用Cookie,前提是将Secure属性设置为true。

Priority :Cookie的优先级。值为Low/Medium/High,当Cookie数量超出时,低优先级的Cookie会被优先清除。

  • 还需要了解两个概念

    • 跨站:两个域名不属于同站(域名-主机名/IP相同,协议相同)。
    • 跨域:两个域名不属于同源(域名-主机名/IP相同,端口号相同,协议相同)。
  • 并且谷歌浏览器新版本Chrome 80将Cookie的SameSite属性默认值由None变为Lax

这下就很清楚明了了,有两种解决方案

  1. 将Cookie的SameSite值设为None,Secure值改为true,并且升级为https,我们就可以跨域使用Cookie。
  2. 将Cookie的SameSite值设为Lax/Strict,并且将前后端部署在同一台服务器下,我们就可以在同一站点使用Cookie。
  • 注意

    • 如果是本地测试想要前后端对接我们就只能使用方案一了
    • 两种方案需要先解决浏览器同源策略也就是跨域问题

前端设置

  • 这里以vue的axios为例
import axios from 'axios'
// 只需要将axios中的全局默认属性withCredentials修改为true即可
// 在axios发送请求时便会携带Cookie
axios.defaults.withCredentials = true

后端设置

  • 这里以Django为例
  • Django跨域问题请参考另一篇文章:【Django跨域】一篇文章彻底解决Django跨域问题
# 我们需要修改 seeting.py 修改项目设置
# 记得先设置允许访问的IP
ALLOWED_HOSTS = ['*']# 就像我们上面所说的一样有两种解决方案# 方案一
# 将session属性设置为 secure
SESSION_COOKIE_SECURE = True
# 设置cookie的samesite属性为None
SESSION_COOKIE_SAMESITE = 'None'
# 且将协议升级为https# 方案二
# 前后端部署在同一台服务器即可# 记得先解决ajax的跨域问题
# 加入以下代码即可
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOW_ALL_ORIGINS = True
CORS_ALLOW_HEADERS = ('*')

是不是非常简单呢,不同的前后端框架按照原理解决即可。

如果对你有帮助的话请给我点个赞吧

【跨域】一篇文章彻底解决跨域设置cookie问题!相关推荐

  1. android webview 设置cookie时间,解决Android webview设置cookie和cookie丢失的问题

    Android页面嵌套了一个h5,H5页面内部有用户登陆页面,发现h5页面的登陆功能无法使用,一直登陆失败.和web那边商量一会,发现js写入的cookie丢失了.所有需要Android这边在重写写入 ...

  2. 迁移学习与跨域推荐,以及解决跨域推荐的方法

    本文主要是详细介绍一下跨域推荐,包含但不局限于以下几个部分: 迁移学习 跨域推荐 跨域推荐可以怎么做 冷启动的其他一些方法 可以参考的论文有哪些 1. 迁移学习 以下内容参考[推荐系统中的多任务学习- ...

  3. 跨域理解及服务器端解决跨域问题

    1.跨域请求,就是这个服务器去拿另一个服务器的资源,另一个服务器的域名肯定和当前的服务器域名不一样嘛. 浏览器默认是不允许跨域请求的,是浏览器对JavaScript施加的安全限制.是浏览器对JavaS ...

  4. 26、vue前端出现跨域问题,如何解决跨域?

    问题: 因为浏览器的同源策略的限制问题(协议.主机.端口一致),浏览器访问非同源的网址时,会出现无法获取数据(已发请求,服务器已收到请求),出现跨域问题 3种解决方法: 1.cors跨域(配置服务器) ...

  5. 前端跨域的理解和解决跨域的方案详解(全)

    作为前端开发,我们遇到最多的应该就是跨域问题,对于萌新来说,跨域就是一道墙,不知所措,其实只要理解了跨域的含义和原理,解决它是不难的,今天给大家介绍下什么是跨域和跨域的解决方案! 什么是跨域? 跨域是 ...

  6. java跨系统和跨域_java web服务解决跨域问题

    问题1:浏览器页面跨域请求报错 相信很多程序员都遇到过跨域的问题,如何解决一直是一件很头疼的事情,我就描述下我遇到的问题,及解决办法.什么是跨域,请自行脑补. 需要添加maven依赖,在web.xml ...

  7. 什么是跨域,以及如何解决跨域问题?

    跨域是相对于同源策略而言的. 同源策略是一种约定,它是浏览器最核心也最基本的安全功能 所谓同源是指: 协议,域名,端口都相同,就是同源, 否则就是跨域 同源策略带来的影响 在同源策略下, 浏览器只允许 ...

  8. Win10、Win7系统,电脑蓝屏,什么原因怎么解决?一篇文章彻底解决!

    Win10.Win7系统电脑蓝屏?什么原因?怎么办?如何解决?带着这些问题小编一一介绍下. Win10.Win7系统,电脑蓝屏怎么解决,电脑蓝屏什么原因标题 随着使用电脑的时间增长,我们的电脑逐步出现 ...

  9. proxy跨域不生效_前端开发:深入使用proxy代理解决跨域问题

    在前端领域里面,跨域指的是浏览器允许向服务器发送跨域请求,进而克服Ajax只能同源使用的局限性限制.同源策略是一种约定,而且是浏览器中最基本也是最核心的安全功能,若缺少了该策略,浏览器非常容易被*** ...

最新文章

  1. VisualSVN安装配置与使用
  2. 有一部分文章设置了私密,论文完成后会公开~
  3. [android] listview入门
  4. Docker的部署-包括网关服务(Ocelot)+认证服务(IdentityServer4)+应用服务
  5. 高龄申请海外计算机科学博士,【原创】牛津在读小博谈谈在海外攻读生命科学专业的一些心得...
  6. python3 random模块操作
  7. ct上的img表示什么_明明胸部CT上已经写了肺癌,为什么还要做那么多花钱又痛苦的检查...
  8. MFC控件使用总结——CListCtrl
  9. 12. javacript高级程序设计-DOM2和DOM3
  10. 一个asp.net聊天是源码
  11. ies4linux 本地安装,Linux下离线安装ies4linux
  12. led灯光衰怎么解决_如何解决LED光衰的问题
  13. 个人wiki搭建资料整理
  14. (18)python字符串的使用
  15. IPCam的启动过程和工作流程
  16. 扩展UbuntuTouch根目录,解决安装空间不足的问题
  17. l那是计算机房吗,机房设计常用计算公式
  18. Linux安全之PHP木马查杀与防范
  19. 【WAF剖析】——sql注入之bypass深度剖析
  20. JavaMail API 1.4.7邮件发送

热门文章

  1. 基于MATLAB的人脸识别提纲
  2. mysql DDL 语句
  3. Python 详细教程 —— pyautogui 库 基本用法
  4. sqlserver数据库可疑解决办法
  5. R语言:用R语言填补缺失的数据
  6. (转载)有关推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟输入区别...
  7. IOMMU/SMMUV3代码分析(1)SMMU设备的分配
  8. Zuul网关服务使用详解
  9. 【算法训练营学习笔记-Week06】一遍不懂就多刷几遍
  10. 目前计算机常用的硬盘类型,干货大放送,电脑硬盘分类你知道几个?