Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Заголовки, куки и PHPSESSID (http://www.flasher.ru/forum/showthread.php?t=131589)

SamFR 24.10.2009 02:16

Заголовки, куки и PHPSESSID
 
Здравствуйте.

Сразу оговорюсь, что работа ведёся из-под AIR, поэтому, если тема опубликована не в том разделе – извиняюсь. Хотя, как мне кажется, вопрос касается не только AIR.

Задача стоит следующая: узнать ID PHP-сессии из-под флеша. ID запоминается c помошью выставления серваком соответствующей куки.

Первое, что приходит в голову – воспользоваться URLStream, дождаться прихода httpResponseStatus и вытащить содержимое соответствующего заголовка Set-Cookie из массива HTTPStatusEvent.responseHeaders.

Но такой способ срабатывает только в том случае, если кука ещё не выставлена. Если же кука выставлена, то Set-Cookie, естественно, не приходит, а содержимое куки флеш передаёт серваку в заголовке Cookie запроса. Это в том случае, если URLRequest.manageCookies = true. Но проблема в том, что мы (по крайней мере, насколько я понял) не можем получить доступ к тем заголовкам запроса, которые добавлены флешем самостоятельно (в том числе, и к заголовкам Cookie). Массив URLRequest.requestHeaders остаётся пустым.

Была мысль лезть напрямую в хранилище куки и доставать оттуда нужную информацию, но тут встаёт вопрос кроссплатформенности и различных адресов хранилищ под разными системами (и даже под разными версиями одной).

И, наконец, третий вариант – выставить URLRequest.manageCookies в false и заниматься обработкой и хранением куки самостоятельно. Что, безусловно, позволяет решить проблему получения ID сесии, но, как мне кажется, слишком масштабно для решения такой базовой задачи.

Если кто-нибудь сталкивался с похожей задачей, или есть какие-то идеи – буду очень благодарен, ибо реализовывать все тонкости спецификации работы с куками ой как неохота, да и сроки поджимают =)

ujenjt 13.11.2009 20:50

Я думаю, самый длинный, но надежный путь - третий. А насчет тонкостей спецификации - то по моему каждый браузер что хочет с куками то и делает.

SamFR 13.11.2009 22:03

Да, Женька, ты прав :) Только насчёт браузеров не совсем согласен – всё-таки стандарт есть стандарт.

P.S. Ну не настолько этот путь и длинный, насколько я помню, у тебя не очень много времени всё это заняло)

BlooDHounD 14.11.2009 23:00

а если так:
Код AS3:

var cookie:String = ( ExternalInterface.call('function() { try {  return document.cookie } catch(e) {} }') as String )

?

bicubic_bublic 14.11.2009 23:58

Цитата:

Сообщение от BlooDHounD (Сообщение 865653)
а если так:
Код AS3:

var cookie:String = ( ExternalInterface.call('function() { try {  return document.cookie } catch(e) {} }') as String )

?

это AIR

Добавлено через 51 секунду
а вариант добавление на сервер скрипта который отдает id?

SamFR 15.11.2009 01:02

BlooDHounD, спасибо за идею, способ и правда хорош. К сожалению, в данном случае так не получится, речь ведь идёт об эйровском приложении...

bicubic_bublic, в том-то всё и дело, что заказчик наотрез отказался от такого варианта. Не очень понятно, правда, почему.


Часовой пояс GMT +4, время: 11:31.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.