chrome 在不同域的 iframe 中呈现的网站无法设置和获取 cookie
In chrome website rendering in iframe with different domain is unable to set and get cookies
网站 a.com
正在 iframe 中呈现 b.com
。当 运行 网站 b.com 单独时,一切正常。但是当 运行 a.com
时,网站 b.com
无法设置或获取 cookie。
a.com
没有参与设置或获取 cookie。 b.com
正在设置或获取 cookie
- Cookie set/get 使用 https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js
- Cookie 设置为与 none 相同的站点并且安全可靠。
Cookies.set(Key,Value,{sameSite:'None',secure:true,expires:30,domain:'b.com'})
- 将
chrome://flags
中的同站点选项从默认更改为禁用时,一切正常。
Iframe child cookie 无法在 parent 中设置,反之亦然。由于安全原因,它受到限制。最好的方法是使用来自 parent 的邮件
widow.getElementById("iframeId").contentWindow.postMessage("your message","*");
Child 听那个消息
const allowedOrigins = new Set();
allowedOrigins.add('localhost:3000');
await window.addEventListener("message", (event) => {
if(event.origin) {
const originUrl = new URL(event.origin);
const originHost = originUrl.host;
if(!allowedOrigins.has(originHost)) {
return;
} else {
//do your thing
}
}```
网站 a.com
正在 iframe 中呈现 b.com
。当 运行 网站 b.com 单独时,一切正常。但是当 运行 a.com
时,网站 b.com
无法设置或获取 cookie。
a.com
没有参与设置或获取 cookie。b.com
正在设置或获取 cookie- Cookie set/get 使用 https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js
- Cookie 设置为与 none 相同的站点并且安全可靠。
Cookies.set(Key,Value,{sameSite:'None',secure:true,expires:30,domain:'b.com'})
- 将
chrome://flags
中的同站点选项从默认更改为禁用时,一切正常。
Iframe child cookie 无法在 parent 中设置,反之亦然。由于安全原因,它受到限制。最好的方法是使用来自 parent 的邮件
widow.getElementById("iframeId").contentWindow.postMessage("your message","*");
Child 听那个消息
const allowedOrigins = new Set();
allowedOrigins.add('localhost:3000');
await window.addEventListener("message", (event) => {
if(event.origin) {
const originUrl = new URL(event.origin);
const originHost = originUrl.host;
if(!allowedOrigins.has(originHost)) {
return;
} else {
//do your thing
}
}```