Передача безопасных файлов cookie в PHP через AJAX - PullRequest
1 голос
/ 20 ноября 2011

Я реализую обмен токенами LinkedIn JavaScript на REST , и у меня есть страница с поддержкой SSL, на которую входит участник, которая хранит свой oauth-токен в безопасном cookie-файле «учетные данные» согласно документам , Затем я пытаюсь передать эти куки на страницу PHP через jQuery $.post():

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

Когда я проверяю данные, отправляемые через Firebug, я вижу следующее в заголовке jQuery POST:

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

Тем не менее, на странице exchange.php открываются только незащищенные файлы cookie (только принимающая страница может видеть только файлы Google Analytics и файлы cookie сеанса PHP), выполнив print_r($_COOKIE);:

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

Есть идеи, что я делаю не так? Я размещаю сообщение в том же домене, используя SSL, но безопасный файл cookie недоступен для сценария exchange.php.

Обновление:

Теперь я отображаю значения $ _SERVER на странице exchange.php, и, что интересно, я получаю следующее:

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 Ответ

1 голос
/ 20 ноября 2011

Понял это - на сервере, на котором я выполняю приведенный выше код, у меня установлен Suhosin , и он ограничивал индексы запросов и файлов cookie максимальной длиной до 64 символов - что полностью обфусцированный файл cookie linkedin_oauth_YYYY был длиннее, чем. Вот изменения, которые я сделал в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...