在 Django 服务器上使用 ab(apache 基准测试)发出 POST 请求
Make a POST request using ab (apache benchmarking) on a django server
我正在尝试使用 ab 向使用 django 构建的表单发出 HTTP POST 请求。
我正在使用以下行:
ab -n 10 -C csrftoken=my_token -p ab_file.data -T application/x-www-form-urlencoded http://localhost:8000/
我的 ab_file.data
看起来像这样:
url=my_encoded_url&csrfmiddlewaretoken=my_token
它总是returns一个403
状态码。
当我使用相同的参数使用 curl
时,它起作用了。卷曲线:
curl -X POST -d "url=my_encoded_url&csrfmiddlewaretoken=my_token" --cookie "csrftoken=my_token" http://localhost:8000/
我该怎么做?
文件必须有正确的url编码数据。如果您 url-手动编码,很容易出现空格之类的拼写错误编码。最好以编程方式进行。
查看另一个答案:Apache Bench and POST data
关于如何使用 Python 创建此类文件(例如:post.data)
然后使用:
ab -T 'application/x-www-form-urlencoded' -n 10 -p post.data http://localhost:8080/
@jacobm654321,
当然,最好的办法是以编程方式对 URL 进行编码。但我的问题不是那个。我的问题是包含 post 数据的文件在文件末尾有一个空行。 EditorConfig 把它放在那里。删除该空行后,一切正常。
谢谢。
使用 ab 时,数据文件的全部内容必须换行到一行 - 如果它正常展开,它会自动失败 JSON。因此,在您执行此操作之前,与 curl 一起正常工作的数据文件中的 post 将因 ab 而失败。
提示:如果使用 Atom 或 VSCode,select 全部并按 Cmd-J 将所有内容换行。
我正在尝试使用 ab 向使用 django 构建的表单发出 HTTP POST 请求。
我正在使用以下行:
ab -n 10 -C csrftoken=my_token -p ab_file.data -T application/x-www-form-urlencoded http://localhost:8000/
我的 ab_file.data
看起来像这样:
url=my_encoded_url&csrfmiddlewaretoken=my_token
它总是returns一个403
状态码。
当我使用相同的参数使用 curl
时,它起作用了。卷曲线:
curl -X POST -d "url=my_encoded_url&csrfmiddlewaretoken=my_token" --cookie "csrftoken=my_token" http://localhost:8000/
我该怎么做?
文件必须有正确的url编码数据。如果您 url-手动编码,很容易出现空格之类的拼写错误编码。最好以编程方式进行。 查看另一个答案:Apache Bench and POST data 关于如何使用 Python 创建此类文件(例如:post.data)
然后使用:
ab -T 'application/x-www-form-urlencoded' -n 10 -p post.data http://localhost:8080/
@jacobm654321,
当然,最好的办法是以编程方式对 URL 进行编码。但我的问题不是那个。我的问题是包含 post 数据的文件在文件末尾有一个空行。 EditorConfig 把它放在那里。删除该空行后,一切正常。
谢谢。
使用 ab 时,数据文件的全部内容必须换行到一行 - 如果它正常展开,它会自动失败 JSON。因此,在您执行此操作之前,与 curl 一起正常工作的数据文件中的 post 将因 ab 而失败。
提示:如果使用 Atom 或 VSCode,select 全部并按 Cmd-J 将所有内容换行。