Machen Sie eine POST-Anforderung mit ab (apache benchmarking) auf eine django-server
Ich versuche, stellen Sie eine HTTP-POST-Anforderung mit ab eine form gebaut mit django.
Ich bin mit der folgenden Zeile:
ab -n 10 -C csrftoken=my_token -p ab_file.data -T application/x-www-form-urlencoded http://localhost:8000/
Meine ab_file.data
sieht wie folgt aus:
url=my_encoded_url&csrfmiddlewaretoken=my_token
Es gibt immer einen 403
status-code.
Wenn ich curl
mit den gleichen Parametern funktioniert es. Die curl-Linie:
curl -X POST -d "url=my_encoded_url&csrfmiddlewaretoken=my_token" --cookie "csrftoken=my_token" http://localhost:8000/
Wie kann ich das tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Datei muss eine korrekt url-encode-Daten. Wenn Sie die url-Codierung manuell, es ist zu einfach, um Tippfehler wie Leerzeichen falsch kodiert. Am besten tun Sie es programmatisch.
Finden Sie eine andere Antwort: Apache Bench-und POST-Daten
wie Python-erstellen einer solchen Datei ( z.B.: post.Daten)
Dann verwenden:
ab -T 'application/x-www-form-urlencoded' -n 10 -p post.data http://localhost:8080/
Wenn mit ab, die den gesamten Inhalt der Datei muss gewickelt werden, die auf einer einzelnen Linie - es schlägt im hintergrund fehl, wenn es in der Regel erweitert JSON. So ein post von einem Daten-Datei, die funktioniert gut mit curl mit fehl ab, bis Sie dies tun.
Tipp: Wenn Sie mit Atom-oder VSCode, wählen Sie alle und drücken Sie " Cmd-J zu wickeln alles in eine Zeile.
@jacobm654321,
sicher, das beste, was zu tun ist, codieren Sie die URL programmgesteuert. Aber mein problem war das nicht. Mein problem ist, dass Sie die Datei mit den post-Daten hatte eine leere Zeile am Ende der Datei. EditorConfig es dort. Nach entfernen Sie die leere Zeile, alles funktionierte gut.
Trotzdem danke.
vi postFile
,:set binary noeol
,:wq
entfernen Sie die end of line ('\n');