Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » Работа с сессиями в mod_python при использовании flex [RSS Feed]

#1 Апрель 23, 2010 17:10:13

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с сессиями в mod_python при использовании flex

У меня есть web-сервис под mod_python, к которому я обращаюсь либо из html-страницы, либо из flex-приложения.
Мне захотелость использовать сессии в web-сервисе.

Чтобы получить содержимое сессии я использую

from mod_python import Session
sess = Session.Session(req)
Eсли обращаться к web-сервису из html страницы, то в cookie появляется переменная, содержащая идентификатор сессии:
pysid=cd68ca9a483661ace7bce6abc53d16c1
Логично предположить, что при повторном обращении с той же html-страницы к web-сервису, в mod_python произойдёт поиск данных сессии по её идентификатору, взятому из cookie. Html страница работает с web-сервисом нормально, сессия определяется правильно.

Далее я пытаюсь разобраться с flex. Flex (и flash в-целом) не умеет работать с cookie. Только если с помощью хаков, а точнее через вызов javascript. И что делать? При запросе к web-сервису в cookie ничего не попадает. Соответственно не попадает туда и pysid, по которому должны восстанавливаться данные сессии.

Подумалось: можно pysid вытащить на уровне python-а при первом запросе, вернуть явно (т.е. текстом, а не внутри cookie). Далее во flex-е использовать javascript, чтобы записать идентификатор сессии в cookie. После чего остаётся надеяться, что cookie будут отправляться автоматически при любом запросе из flex-а. Есть другие варианты?

Но тут происходит странное, т.е. то, чего я не ожидал. При первом обращении к web-сервису я пытаюсь вытащить pysid из cookie:
str(get_cookie(req, "pysid"))
и получаю None. Т.е. после того, как сессия в mod_python только что создалась, я не могу вытащить информацию об идентификаторе сессии из cookie?



Офлайн

#2 Апрель 23, 2010 17:37:27

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с сессиями в mod_python при использовании flex

одно нашёл. получить идентификатор сессии можно через sess.id()



Офлайн

#3 Апрель 23, 2010 18:49:36

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с сессиями в mod_python при использовании flex

Похоже, что flash просто игнорирует cookie. Т.е. если cookie будут установлены сервером для страницы, на которой работает flash, то эти cookie в дальнейшем будут автоматически приклеиваться ко всем запросам, инициированным flash-ем.



Офлайн

#4 Апрель 28, 2010 14:45:10

pioner
От:
Зарегистрирован: 2009-10-21
Сообщения: 146
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с сессиями в mod_python при использовании flex

Во флэшэ (версия =>8?) есть возможность читать заговки ответа сервера и устанавливать заголовки запроса. Можно попробовать этот путь для модификации заголовков, если именно это требуется.
Да, с запросом из флэша серверу передаются все заголовки (и куки).
На всякий пожарный - у флэша есть еще свое хранилище данных типа куков. Но автоматом туда ничего не пишется.
ИМХО - если будет не апач, или апач без мод_питон - думается, что куки лучше ловить из CGI заголовков.

P.S. почему выбран flex?



Офлайн

#5 Май 18, 2010 13:40:54

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с сессиями в mod_python при использовании flex

вообще альтернатив есть 4:
flex, javascript, silverlight, javafx

flex умеет что-то из того, что не умеет js
flash установлен на большем числе машин, чем те, что поддерживают silverlight и javafx



Офлайн

  • Начало
  • » Web
  • » Работа с сессиями в mod_python при использовании flex[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version