iframe 跨域访问session或cookie丢失问题
  • 分类:html5+css
  • 发表:2017-03-14
  • 围观(379)
  • 评论()

问题描述:

在一个域名A的页面中,使用iframe包含另一个域名B的页面,B域名中由于涉及到下订单,用laravel的csrf做了防攻击,csrf又依赖浏览器的cookie信息,在测试中遇到两个问题:

1、PC端chrome,firefox测试一切正常,IE中cookie获取不到。

2、手机端,android正常,而IOS的safari浏览器也访问不到cookie。

解决方式:

1、IE中获取不到cookie,是因为IE浏览器默认关闭了cookie信息,需要将IE的cookie手动开启,即可正常访问。不过一般用户不知道cookie是什么,直接提示cookie不太合适,建议弹框提示用户”当前浏览器不支持购买,请更换浏览器或到时手机端购买“,或者当用户点击购买时,弹出二维码,提示用户更换浏览器或者扫码到手机端购买。

2、safari浏览器限制页面不保存第三方cookie(当前访问域名A下的页面为第一方cookie,而域名B下的页面为第三方cookie)。

首先在B域名的页面中判断某个session/cookie值是否存在。如果不存在,使用js修改window.top.location跳到一个本域的setSession.php页面。

因为是用window.top.location打开,因此并非iframe去访问,且能以第一方cookie保存.

然后在setSession.php页面执行完set session后,会跳回B域名的页面。之后就能使用session而不失效了。

例如:

a.com/index.php

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>

<html>

<head>

<meta http-equiv=”content-type” content=”text/html;charset=utf-8″>

<title> domain A page </title>

</head>

<body>

<p>A Page</p>

<iframe src=”http://b.com/index.php”></iframe>

</body>

</html>

b.com/index.php

<?php

header(‘P3P: CP=”CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR”‘);

session_start();

 

$ua = $_SERVER[‘HTTP_USER_AGENT’];

// 如果是safari

if(strstr($ua, ‘Safari’)!=” && strstr($ua, ‘Chrome’)==”){

// 如果未设置第一方cookie

if(!isset($_SESSION[‘safari’])){

echo ‘<script type=”text/javascript”> window.top.location= “http://b.com/setSession.php”</script>’;

exit();

}

}

$_SESSION[‘code’] = md5(microtime(true));

?>

<html>

<head>

<meta http-equiv=”content-type” content=”text/html;charset=utf-8″>

<title> domain B page </title>

</head>

<body>

<p>B Page</p>

</body>

</html>

b.com/setSession.php

public function setSession(){

header(‘P3P: CP=”CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR”‘);

session_start();

$_SESSION[‘safari’] = 1;

return Redirect::to(“http://b.com/index.php”);

}

共有 0 条评论

analytical essay conclusion steps to writing an argumentative essay writing a scholarship essay essay introduction outline speech writing services custom dissertation writing master thesis proposal law essay help uk dissertation writing help essay outline format essay proofreading service