2011-10-05 35 views
6

因此,我在一個域上有一個腳本標記指向另一個域的頁面,每次刷新頁面時都會生成一個新的session_id。這隻發生在IE瀏覽器,所有其他瀏覽器似乎工作。腳本標記內的Cookie包含在跨域

這裏是與代碼爲例(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> 

而就http://domain2.com/index.php

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

打開瀏覽器或Firefox在domain1.com/index。 PHP和你應該看到一個警告框與會話ID。每次刷新時,您始終擁有相同的會話ID。 在IE中(我嘗試過7,8和9),會話ID總是不同的。 餅乾似乎沒有妥善保存。

感謝您的任何幫助。

+0

任何人都認爲它可以完成? – Frank

+0

我發現Internet Explorer中隱私策略的默認值爲「中」,它表示:阻止沒有簡潔隱私策略的第三方Cookie 如果將其設置爲允許全部,則它可以正常工作。但是有沒有辦法繞過這個? – Frank

回答

2

對於文檔的目的,這是我找到了解決辦法:

我創建了IBM的P3P策略編輯器(在P3P和CP文件) 上傳的文件夾/ W3C 的文件P3P文件並添加以下在domain2.com上的文件中的標題P3P:CP =「來自CP生成文件的內容」

+2

你做了我的一天,弗蘭克。在我的PHP服務器文件中添加了'header('P3P:CP ='NOI ADM DEV PSAi COM NAV OUR STP IND DEM'');'並且像魅力一樣工作。 IE總是如此...(咳嗽,咳嗽)那種有趣的... –