Django client.cookies 是空的,但是在访问 url 时显然有一个 CSRF 令牌分配为 cookie
Django client.cookies is empty, but when visiting the url there is clearly a CSRF token assigned as a cookie
Django 3.2,python3.8
我有一个强制登录的功能,这样我就可以从受保护的 API 中获取数据。这是代码:
def force_client_login(client, base_url):
url = urljoin(base_url, '/login/')
client.get(url, allow_redirects=False)
print(client.cookies)
csrftoken = client.cookies['csrftoken']
login_data = {
'username': 'HIDDEN',
'password': 'HIDDEN',
'csrfmiddlewaretoken': csrftoken,
}
response = client.post(url, data=login_data)
出于某种原因,client.cookies 正在打印 [] / 一个空数组。当我访问 URL(我打印出来并验证它是正确的)时,我可以清楚地看到有一个 cookie 并且它是 CSRF 令牌,我可以通过在网络下的浏览器开发控制台中查看来看到它并查看获取请求。
这个函数在 python 3.6 版本的同一个项目上运行 运行 在多台不同的机器上。
有什么想法吗?
我的代码是正确的,url 是 http 而不是 https!
单击我在控制台中打印出的 lint 时(我所做的是查看 link 是否正确),它会重定向到 https link,而不是给出错误提示是一个 http link(几乎所有现代浏览器都这样做)。
蹩脚的错误,但记录下来,所以如果有人有类似的问题,他们希望能得到帮助!
Django 3.2,python3.8
我有一个强制登录的功能,这样我就可以从受保护的 API 中获取数据。这是代码:
def force_client_login(client, base_url):
url = urljoin(base_url, '/login/')
client.get(url, allow_redirects=False)
print(client.cookies)
csrftoken = client.cookies['csrftoken']
login_data = {
'username': 'HIDDEN',
'password': 'HIDDEN',
'csrfmiddlewaretoken': csrftoken,
}
response = client.post(url, data=login_data)
出于某种原因,client.cookies 正在打印 [] / 一个空数组。当我访问 URL(我打印出来并验证它是正确的)时,我可以清楚地看到有一个 cookie 并且它是 CSRF 令牌,我可以通过在网络下的浏览器开发控制台中查看来看到它并查看获取请求。
这个函数在 python 3.6 版本的同一个项目上运行 运行 在多台不同的机器上。
有什么想法吗?
我的代码是正确的,url 是 http 而不是 https!
单击我在控制台中打印出的 lint 时(我所做的是查看 link 是否正确),它会重定向到 https link,而不是给出错误提示是一个 http link(几乎所有现代浏览器都这样做)。
蹩脚的错误,但记录下来,所以如果有人有类似的问题,他们希望能得到帮助!