wake-up-neo.net

Wie verwende ich cURL, um Cookies zu senden?

Ich habe gelesen, dass Cookies mit Curl senden funktioniert, aber nicht für mich

Ich habe einen REST Endpunkt als

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

wenn ich versuche zuzugreifen als

curl -v -b ~/Downloads/cookies.txt -c ~/Downloads/cookies.txt http://127.0.0.1:5000/
* About to connect() to 127.0.0.1 port 5000 (#0)
*   Trying 127.0.0.1...
* connected
* Connected to 127.0.0.1 (127.0.0.1) port 5000 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.27.0
> Host: 127.0.0.1:5000
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 401 UNAUTHORIZED
< Content-Type: application/json
< Content-Length: 16
< Server: Werkzeug/0.8.3 Python/2.7.2
< Date: Sun, 14 Apr 2013 04:45:45 GMT
<
* Closing connection #0
"not authorized"%

wo mein ~/Downloads/cookies.txt ist

cat ~/Downloads/cookies.txt
USER_TOKEN=in

und der Server erhält 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 -
<SecureCookieSession {}>
<SecureCookieSession {}>
127.0.0.1 - - [13/Apr/2013 21:45:45] "GET / HTTP/1.1" 401 -

was fehlt mir

256
daydreamer

Das hat bei mir funktioniert

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

Ich konnte den Wert im Backend mit sehen

print request.cookies
419
daydreamer

eine vollständige Anleitung zum Umgang mit Cookies finden Sie unter https://curl.haxx.se/docs/http-cookies.html . Sie können verwenden

curl -c /path/to/cookiefile http://yourhost/

um in eine Cookie-Datei zu schreiben und die Engine zu starten und Cookies zu verwenden, die Sie verwenden können

curl -b /path/to/cookiefile  http://yourhost/

um Cookies zu lesen und die Cookie-Engine zu starten, oder wenn es sich nicht um eine Datei handelt, wird die angegebene Zeichenfolge übergeben.

70
Moeen M

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

127.0.0.1   FALSE   /   FALSE   0   USER_TOKEN  in

mit 7 durch TAB getrennten Feldern, die Domain , Tailmatch , Pfad , sicher , läuft ab , Name , Wert .

30
yurloc