script-tag中的Cookies包含在跨域中

Fra*_*ank 6 javascript internet-explorer cross-domain

所以我在一个域上有这个页面,脚本标记指向另一个域,每次刷新页面时,都会生成一个新的session_id.这只发生在IE上,所有其他浏览器似乎都有效.

这是一个带代码的例子(JS和PHP)

http://domain1.com/index.php:

<!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" />
<title>Untitled Document</title>
<script src="http://domain2.com/index.php"></script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

http://domain2.com/index.php上:

<?php
    session_start();
    header("content-type: application/x-javascript");
    echo "alert('".session_id()."');";
?>
Run Code Online (Sandbox Code Playgroud)

在domain1.com/index.php中打开Chrome或Firefox,您会看到一个包含会话ID的提醒框.每次刷新时,您始终拥有相同的会话ID.在IE中(我试过7,8和9),会话ID总是不同的.cookie似乎没有正确保存.

谢谢你的帮助.

Fra*_*ank 2

出于文档目的,这是我找到的解决方案:

我使用 IBM P3P 策略编辑器创建了一个 p3p 文件(p3p 和 CP 文件) 将文件上传到文件夹 /w3c 中,并在 domain2.com P3P 上的文件中添加以下标头: CP="来自 CP 生成文件的内容”

  • 你让我很开心,弗兰克。在我的 PHP 服务器文件中添加了 `header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTR STP IND DEM"');` 并像魅力一样工作。IE总是那么……(咳咳)有点搞笑…… (2认同)