2014-06-07 68 views
0

我使用jquery.ajaxForm發佈/獲取到auth.mydomain.com/login.php(頁面m.mydomain.com/login.php(HTTP/80)頁HTTPS/443)跨子域名後/ GET請求與PHP會話

header('Access-Control-Allow-Origin: m.mydomain.com'); 
ini_set('session.cookie_domain', '.mydomain.com'); 
session_start(); 

/**Login and db stuff there*/ 
if($allowed) 
{ 
    $_SESSION['check_login'] = true; 
    print 1; 
} 
else 
{ 
    print 0; 
} 

所以在login.php中我得到的Ajax調用 「1」 的結果,但訪問$ _SESSION我得到一個空數組。

代碼:在

ini_set('session.cookie_domain', '.mydomain.com'); 
session_start(); 

print_r($_SESSION); 

調用auth.mydomain.com/login.php(HTTPS/443)regulary在瀏覽器(與GET請求)結果被記錄在上m.mydomain.com/login。 PHP(HTTP/80)

+0

在同一臺服務器上的域名和子域上運行?還要確保每個PHP會話cookie名稱都相同。 –

+0

是域和子域在同一臺服務器上運行。我只是手動設置會話cookie名稱,我可以看到有一個cookie可供閱讀,但$ _SESSION爲空 – Tom

+0

請求是否通過ajax?如果是這樣,你需要確保'xhr'對象中'withcredentials'設置爲'true'。 –

回答

0

當預成型通過AJAX請求,您需要確保withcredentials設置爲truexhr對象,以便Cookie與請求一起發送。