417 Stimmen

Wie verwendet man cURL, um Cookies zu senden?

Ich habe gelesen, dass das Senden von Cookies mit cURL funktioniert, aber nicht für mich.

Ich habe einen REST-Endpunkt wie diesen:

class LoginResource(restful.Resource):
    def get(self):
        print(session)
        if 'USER_TOKEN' in session:
            return 'OK'
        return 'nicht autorisiert', 401

Wenn ich versuche, auf den Endpunkt zuzugreifen, wird er abgelehnt:

curl -v -b ~/Downloads/cookies.txt -c ~/Downloads/cookies.txt http://127.0.0.1:5000/
* Verbindungsaufbau zu 127.0.0.1 Port 5000 (#0)
*   127.0.0.1 wird verbunden...
* verbunden
* Verbindung zu 127.0.0.1 (127.0.0.1) Port 5000 (#0) hergestellt
> GET / HTTP/1.1
> User-Agent: curl/7.27.0
> Host: 127.0.0.1:5000
> Akzeptieren: */*
>
* HTTP 1.0, Annahme nur body-Daten schließen
< HTTP/1.0 401 UNAUTHORIZED
< Content-Type: application/json
< Content-Length: 16
< Server: Werkzeug/0.8.3 Python/2.7.2
< Datum: Sonntag, 14. April 2013 04:45:45 GMT
<
* Verbindung #0 zum Host 127.0.0.1 geschlossen
"nicht autorisiert"%

Der Inhalt meiner ~/Downloads/cookies.txt ist:

cat ~/Downloads/cookies.txt
USER_TOKEN=in

und der Server empfängt nichts:

127.0.0.1 - - [13/Apr/2013 21:43:52] "GET / HTTP/1.1" 401 -
127.0.0.1 - - [13/Apr/2013 21:45:30] "GET / HTTP/1.1" 401 -

127.0.0.1 - - [13/Apr/2013 21:45:45] "GET / HTTP/1.1" 401 -

Was fehlt mir?

701voto

daydreamer Punkte 79971

Dies hat bei mir funktioniert:

curl -v --cookie "USER_TOKEN=Yes" http://127.0.0.1:5000/

Ich konnte den Wert im Hintergrund mit

print(request.cookies)

117voto

Moeen M Punkte 1292

Sie können sich auf https://curl.haxx.se/docs/http-cookies.html für ein vollständiges Tutorial darüber, wie man mit Cookies arbeitet, beziehen. Sie können verwenden

curl -c /pfad/zur/cookie/datei http://ihrserver/

um in eine Cookie-Datei zu schreiben und den Motor zu starten und um ein Cookie zu verwenden, können Sie

curl -b /pfad/zur/cookie/datei  http://ihrserver/

um Cookies zu lesen und den Cookie-Mechanismus zu starten oder, falls es keine Datei ist, wird der angegebene String übergeben.

54voto

yurloc Punkte 2268

Sie verwenden ein falsches Format in Ihrer Cookie-Datei. Wie die curl-Dokumentation besagt, verwendet sie ein altes Netscape-Cookie-Dateiformat, das sich vom Format unterscheidet, das von Webbrowsern verwendet wird. Wenn Sie eine curl-Cookie-Datei manuell erstellen müssen, sollte Ihnen dieser Beitrag helfen. In Ihrem Beispiel sollte die Datei folgende Zeile enthalten

127.0.0.1   FALSE   /   FALSE   0   USER_TOKEN  in

mit 7 TAB-getrennten Feldern, die domain, tailmatch, path, secure, expires, name, value bedeuten.

11voto

afirth Punkte 141

curl -H @

Seit curl 7.55 werden Header aus Dateien mit @ unterstützt

echo 'Cookie: USER_TOKEN=Yes' > /tmp/cookie

curl -H @/tmp/cookie

Dokumente & Commit

6voto

Flip Punkte 5633

Wenn Sie diese Anfrage bereits in Ihrer Anwendung gestellt haben und sie im Google Dev Tools protokolliert sehen, können Sie den cURL-Befehl kopieren, indem Sie mit der rechten Maustaste auf die Anfrage im Netzwerktab klicken. Kopieren -> Als cURL kopieren. Es enthält alle Header, Cookies usw.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X