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>