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

时间:2013-01-01 01:26:32

标签: python ajax cookies wsgi

存在许多与此类似的问题,但没有一个问题可以帮助我。基本上我正在使用WSGI start_response()方法link。我尝试在响应中使用元组[('Set-Cookie','token = THE_TOKEN')]设置一个虚拟标题,并将其添加到开始响应中,如下所示:

status   = '200 OK'
response = 'Success'
start_response(status,[('Set-Cookie', "DMR_TOKEN=DMR_TOKEN")])
return response

我不确定它是否正常工作,但它在setting cookies。现在,让我们假设标头是正确的,并且在以下请求中我想验证令牌。捕获过去设置的cookie /标头的正确方法是什么?

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

(environ.get("HTTP_COOKIE",""))

但是这一直在产生空字符串,所以我只是假设标题/ cookie没有正确设置。

谢谢你们

2 个答案:

答案 0 :(得分:7)

我认为您需要明确设置路径以获取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)

答案 1 :(得分:2)

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

// As you are already in foreach loop so,
 <form action="all-articles.php" method="post">
    <label class="custom-toggle">
      <?php if($article['is_public']): ?>
        <input type="checkbox" checked name="published" value="<?php echo $article['id']; ?>>
        <input type="hidden" name="is_published" value="yes"> or 1
       <?php else: ?>
         <input type="hidden" name="is_published" value="no"> or 0
         <input type="checkbox"  name="published" value="<?php echo $article['id']; ?>>
       <?php endif; ?>
         <span class="custom-toggle-slider rounded-circle"></span>
      </label> 
  </form>