iframe里验证码错误的问题及解决

工作中遇到的问题 从本域A iframe另一个域的页面(是登录页) 验证码总是提示错误 (IE下才有问题,因为那个页要activex 所以开始没怀疑session) 经过排查确定是iframe里的页面生成的cookie是保存不住的;

测试用例如下:
A域页面代码 :
  <iframe src="http://B/p3p.php"></iframe>   

B域页面

 <?php
session_start();
if(!empty($_GET['test'])){
  var_dump($_SESSION['p3p']);
}else{
 $_SESSION['p3p'] = 'room';
 echo "<a href='?test=1'>test</a>";
 var_dump($_SESSION['p3p']);
}
?>
IE下点击IFRAME里的链接 打印出NULL
因为IE里iframe是不传输stored_cookie的
资料原文:
The problem lies with a W3C standard called Platform for Privacy Preferences or P3P for short. You can read all about the boring stuff via the link or else just install the P3P Compact Policy header below. This will allow Internet Explorer to accept your third-party cookie. You will need to send the header on every page that sets a cookie.

解决方法是输出个header

PHP:

header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');

ASP.NET:

HttpContext.Current.Response.AddHeader("p3p","CP=/"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT/"");
JSP:
response.addHeader("P3P","CP=/"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT/"")

试验在设置session的地方输出header即可
 .....
  header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
  $_SESSION['p3p'] = 'room';
.....



参考:http://adamyoung.net/IE-Blocking-iFrame-Cookies
     http://www.w3.org/P3P/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当在网页使用iframe嵌入验证码时,如果出现错误,通常是由以下几个原因引起的。 首先,可能是因为验证码源网站的链接或脚本出现了问题验证码通常由一个外部网站提供,通过iframe嵌入到我们的网页。如果验证码源网站本身出现了故障,比如服务器宕机或验证码生成脚本出错,就会导致嵌入的验证码无法正常显示或工作。 其次,可能是由于网页的其他代码或样式与验证码的脚本发生了冲突。当我们在一个页面同时嵌入多个脚本时,很容易出现代码冲突的情况。这可能会导致验证码脚本无法正确加载或执行,从而导致错误。 另外,还可能是因为浏览器的安全设置限制了iframe的显示。为了防止恶意网站通过iframe伪装,许多浏览器都有安全机制,限制了iframe的使用。在一些安全级别较高的设置,可能无法正常加载验证码iframe,从而产生错误。 为了解决这些问题,我们可以尝试以下几个方法。首先,检查验证码源网站是否正常运行,确保链接和脚本没有出错。其次,逐个排查网页的其他代码或样式,查看是否与验证码的脚本发生了冲突。最后,尝试调整浏览器的安全设置,降低安全级别,以允许加载或显示验证码iframe。 通过以上的方法,我们可以解决iframe嵌入验证码错误问题,确保验证码在网页正常显示和工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值