【问题标题】:App sends another session cookie when embedded in an iframe嵌入 iframe 时,应用会发送另一个会话 cookie
【发布时间】:2021-06-27 14:26:55
【问题描述】:
我目前正在开发一个嵌入式 Shopify 应用程序,它基本上是在 Shopify 管理界面上的 iframe 中加载的应用程序。它使用会话 cookie 来存储 Shopify API 的访问令牌。
问题是,我的应用程序的后端会收到不同的会话 cookie,具体取决于应用程序是否加载到 Shopify iframe 中。
cookie 和 SameSite=none 的域相同。
如果它们是从 iframe 设置的,那么浏览器似乎正在对同一域的 cookie 进行沙盒处理。是这样吗?
【问题讨论】:
标签:
session
cookies
iframe
content-security-policy
【解决方案1】:
可能是 3 个问题:
-
有时您可以拥有几个同名的不同 cookie。浏览器发送所有这些,但在服务器端通常使用关联数组(如 PHP 中的$_COOKIE)。因此,最后一个 cookie 会覆盖所有以前的同名 cookie。
碰巧 iframe 获得与主页不同的 cookie。
使用 Apache 服务器,您可以通过 apache_request_headers() func 访问所有同名 cookie。 RTFM 用于其他服务器的解决方法。
-
检查 SameSite 属性 ob cookie - 你使用 SameSite=Lax / SameSite=Strict 属性还是不使用此类属性。
请注意,SameSite=None 在现代浏览器中需要 Secure 属性,因此适用于 @仅限 987654328@。
-
“同域”是错误术语,浏览器操作“同源”术语:
“origin”是sheme:// + hostname + port-number 的元组。
因此,所有 3 个部分都应该匹配,而不仅仅是域名。