浏览模式: 标准 | 列表 2011年10月22日的文章

PHP快速判断客户端浏览器是否IE核心

代码如下:

<?php

if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE"))

echo "IE";

else

echo "not IE";

?>

简单测试如下:

IE:微软IE浏览器、360安全浏览器、搜狗高速浏览器

not IE:chrome、firefox、opera

结论:判断快速准确,判断结果以IE核心为准

解决IE浏览器跨域名iframe嵌套网页获取cookies

问题产生的前因:A网站采用iframe框架形式嵌套了B网站的一个页面C,直接打开页面C会在本地保留一个cookie文件,而当采用A网站iframe框架形式嵌套后就无法成功生成cookie文件,该问题仅在IE浏览器环境下出现,firefox、chrome、Safari浏览器下没有问题。

造成该问题的原因:一个所谓的隐私首选项(简称为P3P)的W3C标准。只有在每一页上设置一个cookie发送头,才能允许Internet Explorer接受第三方Cookie。

换言之,只有在页面C上设置一个cookie发送头,那么A网站iframe框架形式嵌套后就可以在IE下成功获得页面C的cookie。

  • 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\"");
  • Django:response = render_to_response('mytemplate.html')
    response["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\"")

本文解决方案参考了http://adamyoung.net/IE-Blocking-iFrame-cookies

Tags: cookies