【发布时间】:2019-05-27 01:21:08
【问题描述】:
我编写了一个 python 脚本,它使用 requests 库来测试 Flask 应用程序。
在测试登录机制时,脚本无法区分成功的登录尝试和失败的登录尝试。 HTTP POST 请求总是返回 200 HTTP 状态码。
在安装的服务器端,成功的用户登录尝试使用状态码 302 记录,因为我在登录后将用户重定向到主页。
测试代码(使用正确的用户凭据):
>>> import requests
>>> from utils import retrieve_csrf_token
>>> url = 'http://localhost:5000/login'
>>> token = retrieve_csrf_token(url)
>>> session = requests.Session()
>>> r = session.post(url, data={'email':'admin@test.com','password':'123456','csrf_token':token})
>>> r.status_code
>>> 200
服务器日志:
Valid form submitted
127.0.0.1 - - [29/Dec/2018 17:33:32] "POST /login HTTP/1.1" 302 -
127.0.0.1 - - [29/Dec/2018 17:33:32] "GET /home HTTP/1.1" 200 -
127.0.0.1 - - [29/Dec/2018 17:33:32] "GET /favicon.ico HTTP/1.1" 404 -
编辑:
经过进一步检查发现,发送POST请求后,r.text中的响应是首页源代码。
使用代理执行相同的步骤或使用 Chrome 开发者工具检查请求,我看到了正确的代码。
【问题讨论】:
-
302 是一个重定向状态码。您的客户将遵循重定向。
-
@nos 是的,我知道。 302是Flask的
redirect()函数在服务端代码中返回的默认代码
标签: python-3.x flask python-requests