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