django - 在 Django 测试客户端响应中测试 SameSite 和安全 cookie
问题描述
我有一个 Django 3.1.7 API。到目前为止,我一直在通过 Django 3.1 之前的自定义中间件在响应中添加SameSite
和Secure
cookie,具体取决于用户代理,并带有自动化测试。现在 Django 3.1 可以自己添加这些 cookie 键,我删除了自定义中间件,仍然想测试响应中 cookieSameSite
的存在。Secure
因此,正如 Django 文档所说,我在 settings.py 中添加了以下常量:
CSRF_COOKIE_SECURE = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SAMESITE = 'None'
SESSION_COOKIE_SAMESITE = 'None'
但是当我在测试中查看响应的内容时,我不再得到任何SameSite
cookieSecure
键。我打印了 cookie 的内容,但它不存在。
为什么?
这是我的测试:
agent_string = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.2227.0 Safari/537.36"
from django.test import Client
test_client = Client()
res = test_client.get("/", HTTP_USER_AGENT=agent_string)
print(res.cookies.items())
为了以防万一,我还尝试了 DRF 测试客户端,结果相同:
agent_string = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.2227.0 Safari/537.36"
from rest_framework.test import APIClient
test_client = APIClient()
res = test_client.get("/", HTTP_USER_AGENT=agent_string)
print(res.cookies.items())
解决方案
推荐阅读
- ruby-on-rails - 如何在 Rails API 数据库中播种新的连接表
- c++ - 将 txt 文件中的行读入向量,然后将其传递给另一个向量以拆分行,使用逗号作为分隔符
- typescript - 打字稿通用函数
- python - 如何在覆盖存储类中为 django 保存方法使用回调方法?
- python - 如何将 pandas 列中的值(之前为零)填充为来自下一行的正确整数/浮点值?
- jenkins - 我可以限制构建每天的执行次数吗?
- sql - SQLITE:查询以表格格式获取数据
- react-native - 在 Windows 操作系统或 Android 上调试应用程序时出错
- r - 循环遍历数据框并绘制图表
- docker - Node-red 容器没有“setting.js”文件