2011-12-08 127 views
7

我有小書籤。如果我打開一個隨機頁面(不是我的),然後單擊書籤,我想檢查用戶是否登錄到我的頁面上。跨域登錄檢查?

我已經在使用Access-Control-Allow-Origin進行跨域AJAX請求,但看起來好像沒有會話ID或Cookie發送到這裏。

有沒有辦法做到這一點?

+0

不要忘了添加刪除,並投入到訪問控制允許的方法,如果您使用REST –

回答

4

亞歷克斯是正確的!這裏完整的解決方案。 (它不適用於IE8和IE9!)

您需要在客戶端設置withCredentials。由於jQuery 1.5.1,你可以像下面顯示的那樣(Source)。對於舊版本,請按照white rabbit

$.ajax({ 
    url: a_cross_domain_url, 
    xhrFields: { 
     withCredentials: true 
    } 
}); 

在服務器端,您必須允許設置選項,允許憑據和允許來源。不允許通配符來源!但是你可以從請求頭:)讀出產地

// auto adapted Access Control to origin from request header. 
$headers = apache_request_headers(); 
foreach ($headers as $header => $value) { 
    if ($header == 'Origin') 
     header('Access-Control-Allow-Origin: ' . $value, true); 
} 
// send cookies from client 
header('Access-Control-Allow-Credentials: true', true); 
// allow all methods 
header('Access-Control-Allow-Methods: GET, POST, OPTIONS', true);