Найти - Пользователи
Полная версия: cgi os.environ cookie не выходит получить все переменные сессии от браузера(HTTP_COOKIE)
Начало » Python для новичков » cgi os.environ cookie не выходит получить все переменные сессии от браузера(HTTP_COOKIE)
1
Xman2007
Есть cgi скрипт, который генерит html страничку с cookie. При входе браузером на сгенеренную страницу, браузер получает сгенеренный session и кучу дополнительных переменных в этой сессии.
Теперь когда браузер сохранил сессию, при последующем входе, этим же браузером, на ту же страницу, я хочу получить все переменные сессии тем же cgi-скриптом, через cookie от браузера, тут то и начинается проблема - я получаю только одну переменную cookie (Content), в данном примере это session.

Подскажите, пожалуйста куда “копать”?


Кусок кода прилагается:

from os import environ
from os.path import join
import Cookie
import datetime
import random
try:
  import cgi, cgitb
  cgitb.enable()
except ImportError:
  sys.stderr = sys.stdout
#cookie
def rendomcookie(length):
  return ''.join(random.choice("1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM") for i in range(length))
request_uri = environ['REQUEST_URI']
if environ.has_key('HTTP_COOKIE'):
    cookieget = environ.get("HTTP_COOKIE")
    cookie = Cookie.SimpleCookie(cookieget)
else:
    expiration = datetime.datetime.now() + datetime.timedelta(days=1)
    cookie = Cookie.SimpleCookie()
    cookie["session"] = rendomcookie(30)
#    cookie["session"]["domain"] = ".example.com"
    cookie["session"]["path"] = request_uri
    cookie["session"]["expires"] = expiration.strftime("%a, %d-%b-%Y %H:%M:%S PST")
print "Content-Type: text/html"
print cookie.output()
print
print "Cookie set with: " + cookie.output()
for i in environ:
    print i + '''=''' + environ[i]
    print "<br>"
print '''<HTML>
      <HEAD>
        <TITLE>test</TITLE>
      </HEAD>
      <BODY>
      </BODY>
  </HTML>'''

Вывод браузера при первом запросе:
##
Cookie set with: Set-Cookie: session=gf4bxMDyc7PtdkdIKiMHbBK09AoA1k; Domain=.example.com; expires=Fri, 18-Oct-2013 11:53:22 PST; Path=/python/

AUTH_TYPE=Basic
SERVER_SOFTWARE=Apache/2.2.25 (FreeBSD) PHP/5.4.16 mod_ssl/2.2.25 OpenSSL/0.9.8y DAV/2
SCRIPT_NAME=/python/index.cgi
SERVER_SIGNATURE=
REQUEST_METHOD=GET
…skip
##

Вывод браузера при последующих запросах (когда сессия браузером уже сохранилась):
##
Cookie set with: Set-Cookie: session=vXi6cTs9tr6XQgINYCkG8u1w3rH4bk
AUTH_TYPE=Basic
HTTP_COOKIE=session=vXi6cTs9tr6XQgINYCkG8u1w3rH4bk; session=vXi6cTs9tr6XQgINYCkG8u1w3rH4bk
SERVER_SOFTWARE=Apache/2.2.25 (FreeBSD) PHP/5.4.16 mod_ssl/2.2.25 OpenSSL/0.9.8y DAV/2
SCRIPT_NAME=/python/index2.cgi
SERVER_SIGNATURE=
REQUEST_METHOD=GET
…skip
##
Xman2007
Разобрался. Браузер не передает сохраненные переменные одной cookie, такие как: Domain, Path, Created,…
…,передается Name и Content каждой куки которая была передана скриптом.
Например:

cookie = Cookie.SimpleCookie()
cookie["session"] = rendomcookie(30)
cookie["user"] = "test"
cookie["name"] = "Vasya"

Тогда в переменной HTTP_COOKIE переменного окружения мы получим:
HTTP_COOKIE=sessionZ9a0g47ANawqMSelFKtn9xVftzPsF; name=Vasya; user=test
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB