2010-01-18 160 views
2

在網站上使用JSONP說xyz.com,我打電話給一個網站abc.com/test.php。然而,每次我打電話給這個網站時,我都會在IE6和IE7中獲得一個新的會話ID。在其他瀏覽器中,它保持不變。JSONP PHP會話不會保持不變

的test.php的代碼是一樣的東西:

<?php 
session_start(); 
echo session_id(); 
?> 

然而,我在另一個窗口查看http://abc.com/test.php後,再刷新我的網頁在xyz.com與JSONP的代碼,它顯示了一個恆定的ID。我不知道爲什麼。有什麼建議麼?

這隻發生在IE6和IE7中。按預期完成所有工作。不知怎的,IE6和IE7不縫縫隙保留會話ID(即cookie名稱),直到我實際上在另一個窗口中訪問該網站。

回答

3

基於PHP.net的一些信息,會不會添加這個頭文件?

<?php header('P3P: CP="CAO PSA OUR"'); ?> 

引用:

「在不同的服務器比一個服務於由框架(.html或 其他文件類型)稱爲一個PHP文件使用會話變量時的解決方法。 PHP:

在這些條件下的IE6或更高版本默默(由invoquing在session_start()明確或含蓄地)拒絕會話cookie是 試圖創建

因此,您的會話變量將返回一個空值。

根據MS kb,解決方法是添加一個頭,說您的遠程.php頁面不會被濫用權限已被授予的事實。

發生在PHP文件,將創建/更新所需的會話變量此頭:」

如果不解決這個問題,它可能是做的HTTReferer爲IE沒有按發送它的請求,從JavaScript發起(例如,在IE中這樣做將無法發送HTTR引用程序document.location.href = 'http://example.com/';

+0

非常感謝,如果我能給你我的一些觀點,我會的,極大地幫助了我。 – 2010-01-19 06:03:22

+0

只是很高興它幫助! – scunliffe 2010-01-19 13:55:02