当前位置: 首页 > news >正文

解决前端登录成功之后,往后端发请求携带cookie问题

项目背景:

今天在做伙伴匹配系统:

我现在实现的功能是:

在我登录成功之后,就进入了主页(默认页),在我访问用户页的时候产生的问题

首先说明一下这个Cookie的问题:

我们登录成功之后,服务器会生成一个用来标识用户身份的会话标识符,也就是通常所说的“Cookie”。这个 Cookie 会被存储在用户的浏览器中,并在之后的请求中被发送到服务器,以便服务器能够识别用户的身份。

这个就好比与我们去住酒店的房卡一样

当用户成功登录后,服务器会在响应中包含一个用于标识用户身份的 Cookie,并设置其有效期。这个 Cookie 通常会包含一些加密信息或标识符,以便服务器在后续的请求中能够识别用户身份,并提供相应的权限或内容。

所以,用户登录成功后产生的 Cookie 是存储在用户浏览器中的,并在用户与服务器之间的通信中起着重要的作用。这也是为什么在跨域请求时需要特别注意 Cookie 的传递,确保正确地维护用户的登录状态。

 说回这个Cookie在项目中的作用,当我们成功登录之后,浏览器产生了这个Cookie,如果我们想访问其它页面的话,就需要携带这个Cookie,要不然后端是不认识你的。

我在后端写了一个接口:获取当前用户,怎么获取的呢?就是通过这个前端传来的Cookie,判断你是否已经登录和你是否是普通用户还是管理员。

下面说我碰到的问题:

我在前端登录成功之后,我无法将这个Cookie带给后端

我们可以看到:在这个请求标头中是没有cookie的信息的。

我们需要在Axious的配置中添加:

myAxios.defaults.withCredentials = true;

 

这段代码的作用就是可以让前端携带Cookie。 

在yml的配置文件中:配置 domain:localhost

作用就是设置cookie允许在哪个域名下可携带。

我们在请求标头中也能看到。 

然后说一下我自己的问题:

我一开始的访问:

仔细观察就会发现:我自己之前访问的是:http://127.0.0.1:5173/user/login 这个域名

请求标头中就不携带Cookie

不过我访问:http://localhost:5173/#/user

就携带

原因:

使用127.0.0.1localhost都指向本地主机,但在浏览器的Cookie策略中,它们被视为不同的域。因此,虽然两者都指向同一台主机,但Cookie在这两种情况下的处理方式可能会有所不同。

在处理Cookie时,浏览器基于"同源策略"(Same-Origin Policy)来确定哪些网站可以访问哪些Cookie。网站之间共享Cookie需要满足以下条件之一:

  1. 相同的域名
  2. 相同的子域和顶级域
  3. 使用IP地址访问时,IP地址必须完全相同

因此,使用127.0.0.1localhost是不同的域(或主机),即使它们指向同一台主机,但浏览器仍将其视为不同的来源。

总结一下就是:我一直把我的cookie种在了http://localhost:8080/api这个域,不过http://localhost:8080/api和 http://127.0.0.1:5173/并不是一个域,所以,我在访问 http://127.0.0.1:5173/这个域名的时候,我就一直找不到cookie 。

相关文章:

  • DB-GPT 文档切分报错
  • 猫头虎分享[可灵AI」官方推荐的驯服指南-V1.0
  • LLDP 基本原理
  • 大数据面试题之MapReduce(3)
  • 基于微服务智能推荐健康生活交流平台的设计与实现(SpringCloud SpringBoot)+文档
  • 【C++】vector的底层原理及实现
  • 以智领航 鸿翼助力企业构筑智能化知识管理体系
  • Spring Boot中的热部署配置
  • sheng的学习笔记-hive框架原理
  • 金融科技企业的数据治理与合规挑战:平衡创新与监管的关键战役
  • 什么是定时器?
  • nginx优化和防盗链
  • 使用目标检测模型YOLO V10 OBB进行旋转目标的检测:训练自己的数据集(基于卫星和无人机的农业大棚数据集)
  • MySQL 教程
  • 短视频矩阵系统:打造品牌影响力的新方式
  • 【附node操作实例】redis简明入门系列—字符串类型
  • idea + plantuml 画流程图
  • JAVA SE 6 GC调优笔记
  • JDK9: 集成 Jshell 和 Maven 项目.
  • nodejs实现webservice问题总结
  • OSS Web直传 (文件图片)
  • spring security oauth2 password授权模式
  • 大整数乘法-表格法
  • 实习面试笔记
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 一、python与pycharm的安装
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 智能网联汽车信息安全
  • 函数计算新功能-----支持C#函数
  • 我们雇佣了一只大猴子...
  • ​520就是要宠粉,你的心头书我买单
  • ​渐进式Web应用PWA的未来
  • ###C语言程序设计-----C语言学习(3)#
  • (libusb) usb口自动刷新
  • (二开)Flink 修改源码拓展 SQL 语法
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (一)Kafka 安全之使用 SASL 进行身份验证 —— JAAS 配置、SASL 配置
  • .bat文件调用java类的main方法
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .net 使用ajax控件后如何调用前端脚本
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .Net程序帮助文档制作
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .NET实现之(自动更新)
  • .NET中GET与SET的用法
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042
  • [2013AAA]On a fractional nonlinear hyperbolic equation arising from relative theory
  • [51nod1610]路径计数
  • [ABC294Ex] K-Coloring
  • [BT]BUUCTF刷题第9天(3.27)
  • [C#]winform部署官方yolov10目标检测的onnx模型
  • [daily][archlinux][game] 几个linux下还不错的游戏