iframe cookie跨域(在Safari设置跨域Cookie问题,怎么解决)

本文目录
- 在Safari设置跨域Cookie问题,怎么解决
- 怎么用js跨域读到iframe里的cookie
- Set-Cookie后,Cookie丢失问题解决(跨域)
- 如何使用iframe实现跨域写入cookie 并且兼容大部分浏览器
- 如何解决iframe session 失效问题
在Safari设置跨域Cookie问题,怎么解决
在Safari设置跨域Cookie问题的解决办法:
这是包含iframe的html代码
《script type="text/javascript"》
var str = "我是iframe外部的";
《/script》
《style type="text/css"》
《/style》
《/head》
《body》
《iframe src="iframeIn.html"》《/iframe》
《/body》
《/html》
这是iframeIn.html的代码
《script type="text/javascript"》
function sub() {
alert(top.window.str);
}
《/script》
《style type="text/css"》
《/style》
《/head》
《body》
《input type="button" value="得到引用iframe的那个网页的内容" onclick="sub();"》
《/body》
《/html》
关键得看你iframe里的网页和所要调用的网页是什么关系
怎么用js跨域读到iframe里的cookie
第一种很简单:
将系统B设置为可信站点。
第二种:
IE设置隐私策略:在Internet选项-》隐私-》高级,将“替代自动cookie处理”的选项打上,并“第一方cookie”和“第三方cookie” 都设置为 接受;如下图:
第三种:
在response的head上增加p3p协议;
java: 增加一个filter ,在 doFilter 部分:
Java代码
代码如下 复制代码
HttpServletResponse res = (HttpServletResponse) response;
res.setHeader(“P3P”,”CP=CAO PSA OUR”);
Set-Cookie后,Cookie丢失问题解决(跨域)
iframe跨域访问,服务端设置免登cookie( response.addHeader("Set-Cookie",".....") )后,有的访问能携带免登cookie;有的免登cookie丢失,登录失败。
对某些UA( request.getHeader("user-agent") ),不设置 SameSite
如何使用iframe实现跨域写入cookie 并且兼容大部分浏览器
请首先修改hosts文件来模拟本机跨域
127.0.0.1 localhost
127.0.0.1 b.com
127.0.0.1 a.com
我们的目的:
由a.com登录,如果登录成功,就生成a.com的cookie。而对于b.com则无需再次登录。
遇到的困难:
浏览器同源策略限制,即A站点页面的脚本是无法直接操纵B站点的内容。
试想如果所有第三方网站都可以对taobao.com的首页任意篡改,那这个社会还有什么安全性可言呢?
其实浏览器的安全策略逻辑很简单,就是我的地盘我做主,出了我的地盘我做不了主。
解决方案:
a.com根据用户输入操作a.com的cookie,b.com根据用户在a.com得到的输入数据来操作b.com的cookie。
如何在a.com用户输入a.com的用户数据时同时提交到b.com的验证页面呢?
这时候iframe就派上用场了。
相关代码:
《form method="post" action="《?php print $b?》setcookie.php" target="ifrm" 》《fieldset》
《legend》跨域获取cookie《/legend》
《b》用户名《/b》
《p》
《input type="text" id ="username" name="username"/》
《/p》
《p》《button onclick="login()" type="submit"》Login《/button》《/p》
《/fieldset》
《/form》
...
《iframe id ="ifrm" name="ifrm" style="display:none;" src="《?php print $b?》setcookie.php" /》
请注意form表单的相关属性,b.com/setcookie.php页面就是验证a.com用户的输入然后生成b.com的cookie,这样后续访问b.com无需再次输入用户名和密码。
缺点:
需要先设置跨域站点的cookie然后再来设置本域的cookie;
如果跨域站点请求耗时较长,直接影响本域的操作时间;
另外也需要额外的代码来处理跨域站点请求失败后的操作
IE中需要设置接受cookie(隐私),这一点比较不方便。
附件:/Files/1000/xdm.rar
测试方法:
1)按文章开头修改hosts文件
2)登录a.com/default.php
3)输入表单数据
4)点击a.com/default.php下面的链接就可以在b.com/getcookie.php看到b.com的cookie
如何解决iframe session 失效问题
iframe跨域与session失效问题的解决办法
这篇文章主要介绍了iframe跨域与session失效问题的解决办法,有需要的朋友可以参考一下
何为跨域跨域session/cookie?
也就是第三方session/cookie。第一方session/cookie指的是访客当前访问的网站给访客的浏览器设置的seesion /cookie,
会被存储在访客的计算机上。第三方session/cookie指的是当前访问的网站中会加载(嵌入)另外第三方的网站代码,例如促销广告,那么第三方网
站也会在访客的计算机上添加session/cookie,这种就是第三方session/cookie。
我的问题
***隐藏网址***
初步分析:
细查发现,在使用IE浏览器(v7\8)访问时,服务器端日志中显示sessionId一直在变化,每次请求都会产生一个全新的sessionId.
显然这是导致无法登录的直接唯一原因,如果解决这个问题则可正常登录。
深入分析:
为什么在IE浏览器(v7\8)上会出现这种情况呢,百度了解后得知:
出于隐私安全的考虑,IE会丢失Iframe中的Cookie,IE6/IE7支持的P3P(Platform for Privacy Preferences
Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookie,Firefox、Chrome 不存在此问题。
我们知道Session
其实就是基于Cookie的。客户端在第一次与服务器建立会话时,会分配给客户端一个随机的sessionId,并存于客户端cookie中,然后在之后的请求中,会带上这个Cookie,如果在客户端找不到这样的Cookie,那么服务器就会重新分配一个。
而我的应用结构恰恰如此,即内置一个iframe嵌入远程应用来实现的。
解决办法:
要解决这个问题就是要在请求时添加“P3P”协议。那么如何实现呢?
在框架页面加入如下代码:
复制代码
代码如下:
《%
// 解决IE7\8跨域访问问题
response.setHeader("P3P","CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi
CONi HIS OUR IND CNT\"");
%》
至此,问题已解决

更多文章:
excel表格中,如何匹配单元格中含有通配符“*“?EXCEL SUBSTITUTE 通配符
2026年9月20日 21:45
tcpip有多少个协议(tcpip参考模型中应用层协议常用的有)
2026年1月18日 15:45
qq聊天音乐代码(qq发信息有音乐符号,点一下它出来一首歌)
2025年12月24日 17:15
SAP是一个什么行业_sap是干什么的?南京雨润集团sap岗位怎么样
2026年8月6日 18:15
ajax提交form表单失败(layui的以ajax提交表单不成功问题)
2026年9月3日 04:15
php运行环境安装(server2008如何部署iis+php+mysql运行环境)
2025年9月24日 02:45
simulink安装包下载(谁有关于光热发电的simulink仿真或其他仿真)
2026年3月2日 01:30
大漠易语言模块(大漠插件易语言模块为什么分辨率变化了.鼠标移动到坐标就不对了)
2026年3月12日 03:45


















