2013年2月19日 星期二

IE使用iframe跨網域,cookie或session失效

例如:
當在 http://aa.example.org/index.html
使用iframe載入另一個網域的登入頁面 http://bb.example.com/login.php
會發現在IE無法登入,因為IE預設的安全性,不允許在iframe存取跨網域的cookie,
所以cookie和session都一併失效了。

http://aa.example.org/index.html內容如下
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
#loginframe {
 height: 115px;
 width: 300px;
}
</style>
</head>

<body>
<iframe id="loginframe" src="http://bb.example.com/login.php" frameborder="0" scrolling="no" allowtransparency="true"></iframe>
</body>
</html>


解決方法:
在iframe跨網域載入的那一頁加入header值
P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT" 

PHP範例如下(在 http://bb.example.com/login.php 最上面加入以下內容)
<?php
header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
?>

沒有留言:

張貼留言