如何在本地开发(HTTP)期间绕过Microsoft Edge中的SameSite cookie限制,以便浏览器可以接受从后端发送的cookie

问题描述 投票:0回答:1

我正在开发一个本地开发项目,其中有一个在端口 4200 上运行的 Angular 前端和在端口 3000 上运行的 Express 后端,两者都通过 HTTP 提供服务。我需要使用 SameSite=None 的 cookie 来允许浏览器接受并保存从后端发送的

cookie
以进行会话管理。但是,Microsoft Edge 强制执行以下规则:带有
SameSite=None
的 cookie 必须设置为
Secure=true
,才能接受从后端发送的 cookie。

我尝试在Edge的edge://flags设置中禁用“没有SameSite的Cookies必须是安全的”标志,但似乎这个标志在最近的版本中已被删除。我目前使用的是边缘版本

Version 131.0.2903.146 (Official build) (64-bit)

有没有办法可以绕过这个问题,以便我可以测试 cookie 的处理方式?这是我当前的“express-session”配置供参考:

app.use(session({
   name: 'express-session-id',
   secret: process.env.session_secret,
   resave: false,
   saveUninitialized: false,
   store: sessionStore,
   cookie: {
       secure: false,
       httpOnly: true,
       maxAge: 1000 * 60 * 3,
       sameSite: 'none'
   }}));

问题:

1- 有没有办法在本地开发过程中在不使用 HTTPS 的情况下禁用 Microsoft Edge 中的 SameSite cookie 强制执行?

2- 如果没有,在使用 HTTP 时我必须使用 SameSite=None 来测试跨域 cookie 的替代方法是什么?

3-是否有任何开发人员工具或解决方法可以暂时绕过此限制?

我尝试过的:

1- 在我的会话 cookie 配置中设置 secure: false。

2- 在edge://flags 中搜索标志以禁用 SameSite 强制执行。

我已经检查了其他类似的问题,但是所有答案似乎都已过时,因为 Edge 已更新,是否有更新的解决方案?或者有什么更快的解决办法吗?

如果有类似的问题我错过了答案,请指出我!

提前致谢!

cookies microsoft-edge express-session samesite
1个回答
0
投票

正如@heiko 在他的评论中指出的:

http:localhost:3000
http:localhost:4200
被视为同一站点且交叉来源。这意味着在设置 cookie 配置时,鉴于请求是从同一站点上的另一个端口发送的,
SameSite
字段可以设置为
strict
,使其成为
SameSite

代码更改:

cookie: {
    secure: false,
    httpOnly: true,
    maxAge: 1000 * 60 * 3,
    sameSite: 'strict' // Right here, changed from 'none' to 'strict'
}}));

对于遇到同样问题的人来说,这是一个深入的答案:

理解术语

同一站点: “同一站点”是指在同一可注册域内发出的请求,忽略协议、端口和子域。

例如,

http://example.com
https://example.com
被视为“同一站点”,因为域 (
example.com
) 匹配。 同样,
http://localhost:3000
http://localhost:4200
是“同一站点”,因为它们共享相同的基域:
localhost
。 这个概念主要在处理 cookie 和 SameSite 属性时相关,该属性确定 cookie 是通过跨站点还是同站点请求发送。

跨源: “跨源”是一个更严格的术语。要使两个 URL 被视为同源,它们的协议、域和端口必须全部匹配。

由于

http://localhost:3000
http://localhost:4200
使用不同的端口,因此它们是跨域的。 这种区别对于同源策略和 CORS(跨源资源共享)等浏览器安全功能至关重要,这些功能控制资源是否可以在不同源之间共享。

© www.soinside.com 2019 - 2024. All rights reserved.