Faire une requête POST à l'aide d'ab (apache benchmarking) sur un serveur django
Je suis en train de faire une requête HTTP POST à l'aide de ab à un formulaire construit avec django.
Je suis en utilisant la ligne suivante:
ab -n 10 -C csrftoken=my_token -p ab_file.data -T application/x-www-form-urlencoded http://localhost:8000/
Mon ab_file.data
ressemble à ceci:
url=my_encoded_url&csrfmiddlewaretoken=my_token
Elle renvoie toujours un 403
code d'état.
Lorsque j'utilise curl
en utilisant les mêmes paramètres, il fonctionne. La boucle de la ligne:
curl -X POST -d "url=my_encoded_url&csrfmiddlewaretoken=my_token" --cookie "csrftoken=my_token" http://localhost:8000/
Comment puis-je le faire?
OriginalL'auteur hermancaldara | 2015-04-19
Vous devez vous connecter pour publier un commentaire.
Fichier doit avoir un correctement encoder des données. Si vous encoder manuellement, il est trop facile d'avoir des fautes de frappe comme les blancs mauvais code. Mieux de le faire par programmation.
Voir une autre réponse: Apache Bench et publier des données
sur la façon d'utiliser Python pour créer un tel fichier ( ex: la poste.de données)
Alors utiliser:
ab -T 'application/x-www-form-urlencoded' -n 10 -p post.data http://localhost:8080/
OriginalL'auteur jacobm654321
Lors de l'utilisation d'ab, la totalité du contenu du fichier de données doivent être regroupées sur une seule ligne il échoue silencieusement si c'est normalement élargi JSON. Donc un post à partir d'un fichier de données qui fonctionne très bien avec curl échouera avec ab jusqu'à ce que vous faites cela.
Conseil: Si vous utilisez l'Atome de l'éditeur, sélectionnez tous et a frappé Cmd-J pour envelopper le tout d'une seule ligne.
OriginalL'auteur shacker
@jacobm654321,
pour sûr, la meilleure chose à faire est de coder l'URL de la programmation. Mais mon problème n'était pas que. Mon problème est que le fichier contenant les données post avait une ligne vide à la fin du fichier. EditorConfig l'a mis là. Après suppression de cette ligne vide, tout a bien fonctionné.
Merci quand même.
vi postFile
,:set binary noeol
,:wq
à supprimer la fin de ligne ('\n');Un grand merci! Répondre à la même question!
OriginalL'auteur hermancaldara