2011-11-20 80 views
1

我正在實施LinkedIn JavaScript to REST token exchange,並且有一個會員登錄的啓用SSL的頁面,該頁面將每個文檔的oauth標記存儲在安全的「憑證」cookie中。我則試圖通過jQuery $.post()通過這些Cookie的PHP頁面:通過AJAX向PHP傳遞安全cookie

$.post('https://' + document.domain + '/exchange.php', function(data) { 
    alert(data); 
}); 

當我檢查通過螢火發送的數據,我可以看到在jQuery的POST頭中的以下內容:

Cookie: __utma=xxxx; __utmc=xxxx; __utmz=xxxx; linkedin_oauth_YYYY=yyyy; PHPSESSID=xxxx; __utmb=xxxx 

然而exchange.php頁面上,只有非安全cookie暴露(只有谷歌Analytics(分析)和PHP會話cookie可以被接收頁面中看到)這樣做print_r($_COOKIE);

Array 
(
    [__utma] => xxxx 
    [__utmc] => xxxx 
    [__utmz] => xxxx 
    [PHPSESSID] => xxxx 
    [__utmb] => xxxx 
) 

任何想法我做錯了什麼?我使用SSL發佈到相同的域,但安全cookie不可用於exchange.php腳本。

更新:

我現在呼應了exchange.php頁面上的$ _ SERVER值,以及,有趣的是我得到如下:

Array 
(
    [HTTPS] => on 
    [HTTP_COOKIE] => __utma=xxxx; __utmc=xxxx; __utmz=xxxx; linkedin_oauth_YYYY=yyyy; PHPSESSID=xxxx; __utmb=xxxx 
) 

所以cookie被獲得通過,但沒有在$ _COOKIE變量中設置?僅供參考,運行PHP 5.3.3。

回答

1

想通了 - 在我運行上述代碼的服務器上,我安裝了Suhosin,它將請求和cookie索引限制爲最大長度爲64個字符 - 完全未隱藏的linkedin_oauth_YYYY Cookie索引是長於。以下是我對php.ini所做的更改:

[suhosin] 
suhosin.cookie.max_array_index_length = 256 
suhosin.cookie.max_name_length = 1024 
suhosin.cookie.max_totalname_length = 4096 
suhosin.request.max_totalname_length = 4096 
suhosin.request.max_varname_length = 1024