Cookie的作用域不区分协议和端口

记一个小问题:Cookie 作用域规则 理解根本原因:端口不是 Cookie 作用域的一部分选择合适方案:根据项目需求选择域名隔离、命名空间、路径隔离等方案考虑安全性:在生产环境中正确配置 Cookie 的安全属性保持一致性:开发环境的配置应尽可能接近生产环境通过本文的分析和实践,相信你能够更好地处理 Cookie 作用域相关的问题,构建更加健壮的 Web 应用。 阅读详情

在这里插入图片描述

1. 问题描述

同一套前端ERP程序,部署了多个账套。两个账套的协议、ip相同,端口不同。

http://xxx.xx.x.xxx:8002
http://xxx.xx.x.xxx:9003

当同一用户在同一浏览器(Chrome)打开这两个不同端口的程序进行操作时,出现跳转到登录页面的问题。

2. 排查过程

经排查,发现是出现了Cookie被覆盖的问题。排查过程如下:

  • 登录 8002 后,获取到 Cookie sessionId=b130ffea-c9dc-46cf-b37d-e28db9ce8ea3;。此时 8002 标签页可与服务端正常通讯。
  • 新开一个标签页,登录 9003 程序,获取到 Cookie sessionId=b74fe72d-822e-410a-965f-125540156fd7;。此时 9003 标签页可以与服务端正常通讯。
  • 切换到 8002 标签页, 此时与后端通讯,请求携带的 Cookie 变成了9003的cookie sessionId=b74fe72d-822e-410a-965f-125540156fd7。程序跳转到登录页面。

前端程序是没有对 Cookie 做任何操作的。说明在第二个标签页即 9003 登录后,第一个标签页 8002 的 Cookie 被覆盖了。

3. 相关知识

查找资料后,知道 Cookie 相对于LocalStorage 和 SessionStorage ,是不会对端口做区分的。

HTTP cookie端口是否特定

1.介绍

由于历史原因,cookie包含许多安全和隐私信息。例如,服务器可以指示给定的cookie用于“安全”连接,但Secure属性在存在活动网络攻击者时不提供完整性。 同样,给定主机的cookie在该主机上的所有端口之间共享,即使Web浏览器使用的通常的“同源策略”隔离了通过不同端口检索的内容。
…

8.5 弱机密性

Cookie不提供端口隔离。如果cookie在一个端口上运行的服务可读,则cookie也可由在同一服务器的另一个端口上运行的服务读取。如果cookie在一个端口上可由服务写入,则cookie也可由在同一服务器的另一个端口上运行的服务写入。出于这个原因,服务器不应该在同一主机的不同端口上运行相互不信任的服务,并使用cookie来存储安全敏感信息。

[谷歌] 浏览器安全手册

默认情况下,cookie范围仅限于当前主机名上的所有URL - 而不是绑定到端口或协议信息。

其它
在http://localhost:3000和http://localhost:4000之间跳转时,Chrome会传入相同的cookie,每个服务都无法理解cookie并生成新的cookie。

但如果访问http://localhost:3000和http://127.0.0.1:4000,就不会有问题。因为Chrome浏览器保持一个cookie本地主机,一个用于127.0.0.1

4. 解决方案

  1. 使用两个浏览器分别打开页面
  2. 摒弃cookie,使用sessionStorage或localstorage保存用户token,请求头使用
token:b74fe72d-822e-410a-965f-125540156fd7

5. 感想

遇到这个问题,首先想到的是去mdn查cookie的作用域,了解到影响Cookie 的作用域两个属性:Domain 和 Path 。在这个问题中我们并没有设置Domain和Path,我们查Path的默认值是orgin相同域(浏览器同源策略),这使我很迷茫,现在端口不同,不就是不同域吗?答案就是上面说的:Cookie的作用域不区分协议和端口,也就是说只要ip地址相同,协议不同或端口不同,cookie都会覆盖。

javascript学习——Cookie详解 Cookie 是服务器保存在浏览器的一小段文本信息,一般大小不能超过4KB。浏览器每次向服务器发出请求,就会自动附上这段信息。HTTP 协议不带有状态,有些请求需要区分状态,就通过 Cookie 附带字符串,让服务器返回不一样的回应。举例来说,用户登录以后,服务器往往会在网站上留下一个 Cookie,记录用户编号(比如id=1234),以后每次浏览器向服务器请求数据,就会带上这个字符串,服务器从而知道是谁在请求,应该回应什么内容。Cookie 的目的就是区分用户,以及放置状态信息,它的使用场景主要如下。 阅读详情

相关推荐

什么是 Cookie 隔离?

网站向服务器请求的时候,会自动带上cookie这样增加表头信息量,使请求变慢。 如果静态文件都放在主域名下,那静态文件请求的时候都带有的cookie的数据提交给server的,非常浪费流量,所以不如隔离开 ,静态资源放CDN。 因为cookie有域的限制,因此不能跨域提交请求,故使用非主要域名的时候,请求头中就不会带有cookie数据,这样可以降低请 求头的大小,降低请求时间,从而达到降低整体请求延时的目的。 同时这种方式不会将cookie传入WebServer,也减少了WebServer对cooki

liuhao9999的博客 1453

多账号同时登录,实现cookie隔离

在项目开发过程中用到了多账号保持登录状态,可以来回切换,并且保留一段时间不掉线的要求,试了一些方法,最后通过[electron](https://www.electronjs.org/zh/docs/latest/tutorial/quick-start)自带的隔离实现的。因为公司保密要求,这里只做简单的内容分享,我把代码简单描述下:

qq_50570718的博客 2305

华为交换机密码策略配置避坑指南:明文/密文、长度、复杂度,一个命令就出错

本文详细解析华为交换机密码策略配置的关键要点,包括密码长度、复杂度及等保合规要求。通过实战案例揭示常见配置误区,如明文/密文密码格式差异、复杂度检查联动机制等,帮助网络工程师避免安全漏洞。特别针对等保二级和三级要求,提供可直接落地的安全加固方案。

weixin_30879169的博客 367

Cookie跨域小知识

今天做前后端分离的项目时,发现:前端项目url:localhost:80,与后端项目的url: localhost:8888,但是设置的cookie,前后端可以共享 查看资料发现: 根据同源策略,cookie是区分端口的,但是浏览器实现来说,“cookie区分域,而不区分端口,也就是说,同一个ip下的多个端口下的cookie是共享的!“,题主所说的ip相同,端口不同,覆盖就是这个道理。 ...

hubing的博客 672

揭秘 | 顶刊论文插图中的高级配色方案(附RGB/HEX码解析)

本文揭秘了顶级期刊如《Nature》《Science》插图的高级配色方案,详细解析了RGB/HEX码的应用技巧。从双色配色的黄金组合到复杂数据可视化的多色解决方案,提供了实用的配色法则和跨平台一致性建议,帮助科研人员提升图表专业度和视觉传达效果。

weixin_28523493的博客 985

Android14到Android16源码移植中的Bluetooth模块规范适配指南

本文详细解析了从Android14到Android16源码移植过程中Bluetooth模块的规范适配挑战,重点介绍了Android.bp配置差异及常见编译报错解决方案。针对代码规范检查、final字段声明、静态方法优化等核心问题提供实用修复方法,帮助开发者高效完成版本升级适配工作。

fire9的博客 254

Cookie

一、 Cookie Cookie是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie 使基于无状态的HTTP协议记录稳定的状态信息成为了可能。 Cookie主要用于以下三个方面: 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息) 个性化设置(如用户自定义设置、主题等) 浏览器行为跟踪(如跟踪分析用户行为等) 二、Cookie的一些属性

qq_30436011的博客 2223

海康威视iVMS-4200在银河麒麟系统部署全攻略与疑难排解

在信创国产化进程中,软件兼容性是关键挑战之一。以安防监控领域广泛使用的海康威视iVMS-4200客户端为例,其从Windows环境迁移到银河麒麟等国产操作系统时,面临架构适配、依赖库匹配等核心兼容性问题。这涉及到跨平台软件部署的通用原理:不同CPU架构(如ARM的飞腾、x86的兆芯)和操作系统底层API的差异,要求软件必须进行针对性编译和优化。解决这类问题的技术价值在于保障专业软件在国产化环境中的稳定运行,是信创产业落地的重要环节。具体到应用场景,如在基于银河麒麟V10的安防监控项目中,通过获取对应架构的.

weixin_33423874的博客 1411

描述cookie隔离的好处_综合一

一 Core Java:(P6级必问其中3题以上)1. 整数数组按绝对值排序List list = (List) Arrays.asList(array).stream().map(v->Math.abs(v)).sorted().collect(Collectors.toList());2. ConcurrentHashMap 的数据结构jdk1.6 segment数组 16个,...

weixin_30888681的博客 396

英飞凌TLF35584 SBC实战:手把手教你配置WDG看门狗与ERR监控(基于AUTOSAR架构)

本文详细介绍了基于AUTOSAR架构的英飞凌TLF35584 SBC芯片WDG看门狗与ERR监控功能的配置方法。通过硬件平台搭建、寄存器级配置、AUTOSAR模块集成及诊断策略优化,帮助开发者快速掌握关键配置技巧,提升嵌入式系统的安全性和可靠性。

weixin_30256901的博客 474

AMESim柱塞泵建模全指南:从HCD库搭建到联合仿真

液压系统仿真中,轴向柱塞泵的建模始终是难点与热点。柱塞泵结构紧凑、功率密度高,在工程机械与航空航天领域应用广泛,然而其运动学与流体细节深度耦合,给仿真带来不小挑战。AMESim平台中的HCD库提供了一种从物理结构出发的建模思路,将柱塞泵分解为容积腔、节流口与机械约束等基础单元,从而真实刻画柱塞腔压力波动、配流特性和容积效率等关键行为,摆脱黑盒模型的局限。基于机理建模的仿真结果,可用于泵参数优化、故障特征分析以及控制策略验证。进一步结合AMESim与Simulink联合仿真,可以高效开发变量泵排量控制系统,研

weixin_29159441的博客 287

Cookie 与端口问题

1. 问题描述 同一套前端ERP程序,部署了多个账套。两个账套的协议、ip相同,端口不同。 http://xxx.xx.x.xxx:8080 http://xxx.xx.x.xxx:9201 当同一用户在同一浏览器(Chrome)打开这两个不同端口的程序进行操作时,出现表单提交错误、切换程序操作需重新登录等问题。 2. 排查过程 经排查,发现是出现了Cookie被覆盖的问题。排查过程如下: 登录 8080 后,获取到 Cookie beegosessionID=xxxxx1。此时 8080 标签页可与

liu_moran的博客 3928

OpenClaw + Antigravity + 飞书完整部署教程

在 Linux 服务器上部署 OpenClaw,使用 Antigravity 本地代理 AI 模型,并接入飞书实现 24 小时在线 AI 助手。

Maynor的博客 1785

Cookie在同域名不同端口共用问题

最近在开发三个后台系统,用的是同一套前端模板。开发完毕之后发现本地同时启动三个端,如果一端登录,另一端会提示登录过期。后来发现是cookie串了 以下是三端在本地的地址 http://172.16.200.36:9500 http://172.16.200.36:9501 http://172.16.200.36:9502 三个端都能访问到cookie,有悖于我所了解的同源策略相关知识。 结论:Cookie的作用域仅仅由domain和path决定,与协议和端口无关。 参考博客:谨记:Co.

qq_41995320的博客 4890

使用openclaw出现blocked URL fetch (url-fetch) reason=Blocked: resolves to private/internal/special 解决方案

本文主要介绍了使用openclaw出现blocked URL fetch (url-fetch) target=https://news.google.com/search reason=Blocked: resolves to private/internal/special-use IP address 解决方案,希望能对使用xx的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 11万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

同一域名不同端口cookie共享问题

Path 标识指定了主机下的哪些路径可以接受 Cookie(该 URL 路径必须存在于请求 URL 中)。以字符 %x2F (“/”) 作为路径分隔符,子路径也会被匹配。

Demon's blog 938

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

浏览器Cookie详解

一、了解 Cookie Cookie最开始被设计出来是为了弥补HTTP在状态管理上的不足。HTTP协议是一个无状态协议,客户端向服务器发请求,服务器返回响应,故事就这样结束了,但是下次发请求如何让服务端知道客户端是谁呢?这种背景下,就产生了Cookie。 cookie 存储在客户端: cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。因此,服务端脚本就可以读、写存储在客户端的cookie的值。 cookie 是不可跨域...

huangpb的博客 3万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

cookie、sessionStorage和localStorage的区别

一、 概念的理解 webstorage本地存储 1)webstorage是本地存储,存储在客户端,包括localStorage和sessionStorage 2)localStorage生命周期是永久,这意味着除非用户显示在浏览器提供的UI上清除localStorage信息,否则这些信息将永远存在。存放数据大小为一般为5MB,而且它仅在客户端(即浏览器)中保存,不参与和服务器的通信 3)ses...

浮生离梦的博客 8万+

HTTP协议--cookie的应用

JWT认证:在用户注册或登录后,我们想记录用户的登录状态,或者为用户创建身份认证的凭证。我们不再使用Session认证机制,而使用Json Web Token(本质就是token)认证机制。

m0_58794378的博客 1244

同IP不同端口,区分cookie

因为cookie无法设置端口只能设置ip,为了区分只能通过cookie 的name下手给每个网站的cookie_name加上不同前缀,以此解决。项目中同个ip,不同端口的网页,一个网站设置cookie失效导致所有网站cookie都失效了。

weixin_43907110的博客 1394

浏览器存cookie不区分端口

有多个不同的项目,同ip但不同的端口,登录B项目后可以看到登录a项目设置的cookie.

2301_78916954的博客 395

相同域名下的不同端口的cookie可以共享

问题:在实际的项目中,经常有不同的项目部署在同一域名下,但是端口不同。但是两个项目之前需要共享cookie 结果:这种情况时可以共享的,当清除其中一个cookie,另一个也会连带清除。但是两者有条件: 1.使用前需要清除缓存; 注:localStorage不可以共享 ...

qq_40086487的博客 6616

区分Cookie,Session,Token

由于HTTP协议是一个无状态协议,客户端向服务器发请求,服务器返回响应。并且你每次都要输入账号和密码进行登录,对于用户来说非常的麻烦!这种背景下,就产生了Cookiecookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。因此,服务端脚本就可以读、写存储在客户端的cookie的值。

m0_62407354的博客 1285

Http协议中Cookie详细介绍

From: https://www.cnblogs.com/bq-med/p/8603664.html Http协议中Cookie详细介绍 Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie。内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期...

welchlam的博客 1094

同域名下不同端口cookie问题

假如同域名 不同端口部署两个服务: 服务A 服务B 服务A产生的cookie在访问B时会携带,反之同理。 为了避免两个服务cookie覆盖,最好对cookie的键取不同的名称加以区分。 相同域名不同端口的两个应用,cookie名字、路径都相同的情况下,后面的cookie会覆盖前面的cookie吗? 如果浏览器访问的服务是ip或localhost的话,会覆盖; 如果浏览器访问的是域名(在...

五山口老法师 4978

cookie在不同端口号可以共享吗

可以共享,根据同源策略cookie是区分端口的,但是对浏览器来说,cookie是区分域,不区分端口的,在一个ip地址下多个端口的cookie是共享的

dtbk123的博客 5169
上一篇: 软件开发方案设计文档ppt
下一篇: 部署YApi时,出现报错信息:Accessing non-existent property ‘count‘ of module exports inside circular dependency
前端蜗牛君
博客等级 码龄10年 274粉丝 158原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值