[翻译]  Make a POST request using ab (apache benchmarking) on a django server

[CHINESE]  在django服务器上使用ab(apache基准测试)发出POST请求


I'm trying to make a HTTP POST request using ab to a form built with django.

我正在尝试使用ab来创建一个使用django构建的表单的HTTP POST请求。

I'm using the following line:

我使用以下行:

ab -n 10 -C csrftoken=my_token -p ab_file.data -T application/x-www-form-urlencoded http://localhost:8000/

My ab_file.data looks like this:

我的ab_file.data如下所示:

url=my_encoded_url&csrfmiddlewaretoken=my_token

It always returns a 403 status code.

它始终返回403状态代码。

When I use curl using the same parameters, it works. The curl line:

当我使用相同参数使用curl时,它可以工作。卷曲线:

curl -X POST -d "url=my_encoded_url&csrfmiddlewaretoken=my_token" --cookie "csrftoken=my_token" http://localhost:8000/

How can I do that?

我怎样才能做到这一点?

3 个解决方案

#1


9  

File must have a properly url-encode data. If you url-encode manually, it is too easy to have typos like blanks wrong encodes. Best do it programmatically. See an another answer: Apache Bench and POST data on how to use Python to create such file ( ex: post.data)

文件必须具有正确的url-encode数据。如果你手动进行url-encode,就很容易像空白一样错误编码。最好以编程方式进行。请参阅另一个答案:关于如何使用Python创建此类文件的Apache Bench和POST数据(例如:post.data)

Then use: ab -T 'application/x-www-form-urlencoded' -n 10 -p post.data http://localhost:8080/

然后使用:ab -T'application / x-www-form-urlencoded'-n 10 -p post.data http:// localhost:8080 /

#2


2  

@jacobm654321,

@ jacobm654321,

for sure, the best thing to do is encode the URL programmatically. But my problem wasn't that. My problem is that the file containing the post data had a blank line at end of file. EditorConfig put it there. After remove that blank line, everything worked well.

当然,最好的办法是以编程方式对URL进行编码。但我的问题不是那个。我的问题是包含帖子数据的文件在文件末尾有一个空行。 EditorConfig把它放在那里。删除该空白行后,一切运行良好。

Thanks anyway.

不管怎么说,还是要谢谢你。

#3


2  

When using ab, the entire contents of the data file must be wrapped onto a single line - it fails silently if it's normally expanded JSON. So a post from a data file that works fine with curl will fail with ab until you do this.

使用ab时,数据文件的全部内容必须包装在一行中 - 如果它通常是扩展的JSON,它将无声地失败。因此,对于curl工作正常的数据文件中的帖子将失败,直到您执行此操作。

Tip: If using the Atom editor, select all and hit Cmd-J to wrap everything to one line.

提示:如果使用Atom编辑器,请选择all并按Cmd-J将所有内容包装到一行。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2018 ITdaan.com 粤ICP备14056181号