iframe内页面cookie同步解决方案

2020-02-19  本文已影响0人  是嘤嘤嘤呀
解决思路

通过form表单提交post请求,通过target关联iframe渲染结果,参考:https://stackoverflow.com/questions/4701922/how-does-facebook-set-cross-domain-cookies-for-iframes-on-canvas-pages

代码片段
<form action="your_post_action" method="post" target="myframe" id="myform">
    <input type="submit" value="提交" id="btn" />
</form>
<iframe name="myframe"></iframe>

说明

your_post_action:负责setCookie和重定向到真实要渲染在iframe里的地址,需要注意的是:
1、your_post_action必须是post请求;
2、your_post_action接口和最后要访问的页面,hostname最好相同,否则还要解决set不了cookie的问题。后端setcookie不成功和iframe内http请求携带不了cookie是两回事。

举个栗子
// 后端有个接口叫set_cookie_for_iframe
app.post("/set_cookie_for_iframe",function(req,res){
  res.cookie("name",'zhangsan', {maxAge: 900000, domain: "192.168.189.210"});  
  res.redirect('http://192.168.189.210:30008/');
});

// 前端:method必须是post
<form action="http://192.168.189.210:8000/set_cookie_for_iframe" method="post" target="myframe" id="myform">
    <input type="submit" value="提交" id="btn" />
</form>
<iframe name="myframe"></iframe>
上一篇下一篇

猜你喜欢

热点阅读