设置cookie并使用Python和WSGI检索它

设置cookie并使用Python和WSGI检索它,python,ajax,cookies,wsgi,Python,Ajax,Cookies,Wsgi,存在许多类似的问题,但没有一个能帮我解决。基本上,我使用的是WSGI start\u response()方法。我尝试在响应中使用元组[('set-Cookie','token=the_token')]设置一个虚拟头,并将其添加到如下启动响应: status = '200 OK' response = 'Success' start_response(status,[('Set-Cookie', "DMR_TOKEN=DMR_TOKEN")]) return respon

存在许多类似的问题,但没有一个能帮我解决。基本上,我使用的是WSGI start\u response()方法。我尝试在响应中使用元组[('set-Cookie','token=the_token')]设置一个虚拟头,并将其添加到如下启动响应:

status   = '200 OK'
response = 'Success'
start_response(status,[('Set-Cookie', "DMR_TOKEN=DMR_TOKEN")])
return response
(environ.get("HTTP_COOKIE",""))
我不确定它是否正常工作,但它就在这里。现在,假设报头是正确的,在下面的请求中,我想对令牌进行身份验证。捕捉过去设置的cookie/头的正确方法是什么

我一直在阅读,发现我需要这样的东西:

status   = '200 OK'
response = 'Success'
start_response(status,[('Set-Cookie', "DMR_TOKEN=DMR_TOKEN")])
return response
(environ.get("HTTP_COOKIE",""))
但这一直在产生空字符串,所以我只是假设header/cookie设置不正确


谢谢大家

我认为您需要明确设置路径,以便从Cookie中获得有用的行为,请尝试以下操作:

from Cookie import SimpleCookie

def my_app(environ, start_response):
    session_cookie = SimpleCookie()
    session_cookie['session'] = "somedata"
    session_cookie['session']["Path"] = '/'

    headers = []
    headers.extend(("set-cookie", morsel.OutputString())
                    for morsel
                    in session_cookie.values())

    start_response("200 OK", headers)

下面是我提出的一个简单解决方案,用于在WSGI中设置不需要外部库的cookie:

def set_cookie_header(name, value, days=365):
    dt = datetime.datetime.now() + datetime.timedelta(days=days)
    fdt = dt.strftime('%a, %d %b %Y %H:%M:%S GMT')
    secs = days * 86400
    return ('Set-Cookie', '{}={}; Expires={}; Max-Age={}; Path=/'.format(name, value, fdt, secs))

def handler(env, start_response):
    content_type = 'text/html'
    headers = [('Content-Type', content_type), set_cookie_header('name', 'value')]
    start_response('200 OK', headers)
    ...

提示:您的wsgi应用程序应该返回类似
return[“Success”]
的内容,而不是
返回“Success”