未在 iframe 中设置 Cookie

Fre*_*son 11 cookies iframe c3.js asp.net-core identityserver4

我在一台服务器上有一个身份服务器 (v4),在不同的服务器和域上有一个 Web 应用程序。我只需要 Windows 身份验证,使用重定向一切正常。但是,我注意到如果 cookie 尚未过期,则静默登录有效。

如果 cookie 已过期,则当前需要重定向,这可以正常工作。然而不幸的是,这意味着如果用户没有在当前屏幕上保存数据,除非我实现缓存机制,否则他们将丢失它。相反,我想设置一个隐藏的 iframe,它只是导航到身份服务器,如果用户在公司基础设施内(他们总是这样),则自动登录。

经过数小时的调试,我发现虽然 cookie 是从 iFrame 正确发送的,但任何 SET 似乎都不起作用 - 它们在 chrome 调试器中作为响应 cookie,但不会在下一次重定向时作为请求 cookie 发送我不知道为什么。

在回应:

Cookie 选项:SameSite Lax、HTTP 真、安全真、路径 /

标题:

内容安全策略:default-src 'self'; object-src '无'; 框架-src 本地主机:44388;frame-ancestors 'self' https://localhost:44388/ ; 沙箱允许形式允许同源允许脚本;base-uri '自我';

持久身份验证:true

编译指示:无缓存

推荐人政策:无推荐人

WWW-Authenticate : 协商 oRswGaADCgEAoxIEEAEAAABJ+0p/zH0aeAAAAAA=

X-Content-Security-Policy : default-src 'self'; object-src '无'; 框架-src **本地主机:44388;frame-ancestors 'self' https://localhost:44388/ ; 沙箱允许形式允许同源允许脚本;base-uri '自我';

X-Content-Type-Options : nosniff

X-Frame-Options : ALLOW-FROM https://localhost:44388/

Alb*_*rez 6

从 2020 年 8 月起,您必须将 SameSite 设置为无,并将安全设置为 True。

在 php 中可以用以下方法完成:

setcookie("变量", 1, time() + (86400), "/ ; SameSite=None; Secure ");

在 javascript 中路径选项之后将是类似的。 document.cookie="cookiename="+0+";Domain=.yourdomain.net; path=/; SameSite=None; Secure"

  • 你好,我想知道为什么是 2020 年 8 月?此时会发生什么? (3认同)

小智 0

为了解决类似的问题(从不同的主机名对 iframe 内的站点进行身份验证),我删除了设置的 SameSite 属性。

SameSite 实际上有三个选项,从最严格到最不严格:严格、宽松和“根本不设置”。

  • 也必须设置安全标志!(仅使用 HTTPS 是不够的) (2认同)