python - 如何存储从请求收到的cookie?

标签 python flask request session-cookies

我有一个应用程序,我在其中发出如下请求:

headers = {'Content-Type': 'application/json;charset=ISO-8859-1'}
d = {'db_name': 'a_database', 'username': 'me', 'password': 'apw'}

db_url = "http://123.45.67.89:1234/something/rest/connections"
r = requests.post(db_url, data=json.dumps(d), headers=headers)

这将创建一个 cookie:

r.cookies
<RequestsCookieJar[Cookie(version=0, name='removed', value='removed', port=None, port_specified=False, domain='123.45.67.89', domain_specified=False, domain_initial_dot=False, path='/something', path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={}, rfc2109=False), Cookie(version=0, name='connectname', value='alsoremoved', port=None, port_specified=False, domain='123.45.67.89', domain_specified=False, domain_initial_dot=False, path='/something/rest', path_specified=False, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False)]>

然后,我可以使用 r.cookies 发出额外的请求,然后在其中指定 cookies=r.cookies

在我的 Flask 应用程序中,我想在多个函数中使用 cookie,因此我想将其存储在 session 中:

from flask import Flask, render_template, request, jsonify, session

session['cookies'] = r.cookies

这样我以后就可以使用

r2 = requests.post(someurl, data=json.dumps(anotherd), headers=headers, cookies=session['cookies'])

但是,这会导致

Object of type 'RequestsCookieJar' is not JSON serializable

我如何存储r.cookies,以便它可用于我的应用程序中的所有功能,但可能因用户而异?

最佳答案

您无法存储 RequestsCookieJar ,不,但是如果您想要的只是 cookie 的名称和值,您可以轻松地将 jar 转换为字典:

session['cookies'] = r.cookies.get_dict()

RequestsCookieJar.get_dict() method还支持按域和路径过滤。

对于 future 的请求,cookies requests.<METHOD>(...)的参数调用直接接受这样的字典。

关于python - 如何存储从请求收到的cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52699212/

相关文章:

python - Django - auto_now 在 models.DateTimeField 中使用什么时区?

python - 虹膜数据集未显示 "Species"列

python - 在线程中使用 python 在 LINUX 中设置环境变量

javascript - 如何正确使用JavaScript来过滤下拉框?

python - 在Python Flask中: What are appropriate places to store data?

python - 如何使 Flask 客户端看起来像是测试机的外部?

android - 如何将新成员添加到 Android 应用程序中的 MailChimp 列表?

request - XPage:如何使用 post http 方法在 2 个 xpage 之间发送数据?

android - Kotlin POST 请求

python - 如何在 Python 上使用 Selenium 从网站上抓取全名?