Ich habe gelesen, dass das Senden von Cookies mit Locken 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, auf Folgendes zuzugreifen:
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?
-c
Option weist Siecurl
an, Ihre Cookie-Datei als Ausgabe-Cookie-Jar zu verwenden, was möglicherweise nicht das ist, was Sie wollen.-b
Option allein funktioniert auch nicht, was den gleichen Fehler ergibt :(-b
Cookie-Datei ist nicht nurvar=value
das gleiche, es sollte auch das Format des Cookies sein, mit dem geschrieben wurde-c
. Gehen Sie zu einer Site, die mit dieser Option Cookies sendet, und sehen Sie sich die resultierende Datei an.Antworten:
Das hat bei mir funktioniert:
Ich konnte den Wert im Backend mit sehen
quelle
-b, --cookie
, z. B.curl -b <file-or-pairs>
wenn es sich um eine Zeichenfolge mit dem'='
Symbol handelt, unverändert übergeben, andernfalls wird es als Dateiname behandelt, aus dem Cookies gelesen werden sollen.--cookie "key1=val1;key2=val2;..."
Unter https://curl.haxx.se/docs/http-cookies.html finden Sie eine vollständige Anleitung zum Umgang mit Cookies. Sie können verwenden
um in eine Cookie-Datei zu schreiben und die Engine zu starten und Cookies zu verwenden, die Sie verwenden können
Um Cookies zu lesen und die Cookie-Engine zu starten, oder wenn es sich nicht um eine Datei handelt, wird die angegebene Zeichenfolge weitergeleitet.
quelle
-b
Flagge, was ist der wesentliche Unterschied zwischen-c
&-b
beide starten die Engine und zeigen auf eine Cookie-Datei?-c
schreibt in die Cookie-Datei,-b
liest daraus. Wenn Sie also Anmeldeinformationen für ein Anmeldeformular senden, geben Sie-c
an, dass das resultierende Cookie in eine Datei geschrieben werden soll. Anschließend-b
lesen Sie das Cookie aus und fügen es in Ihre nächste Anfrage ein.curl -b cookiefile -c cookiefile https://yourhost/
lesen und schreiben Sie im selben Cookie-Store wie Browser.Sie verwenden ein falsches Format in Ihrer Cookie-Datei. In der Curl-Dokumentation wird ein altes Netscape-Cookie-Dateiformat verwendet, das sich von dem von Webbrowsern verwendeten Format unterscheidet. Wenn Sie eine Curl-Cookie-Datei manuell erstellen müssen, sollte dieser Beitrag Ihnen helfen. In Ihrem Beispiel sollte die Datei die folgende Zeile enthalten
mit 7 TAB getrennten Feldern bedeutet Domäne , tailmatch , Weg , sicher , abläuft , Name , Wert .
quelle
Wenn Sie diese Anforderung bereits in Ihrer Anwendung gestellt haben und sie in den Google Dev Tools protokolliert sehen, können Sie den Befehl cURL kopieren aus dem Kontextmenü verwenden, wenn Sie mit der rechten Maustaste auf die Anforderung auf der Registerkarte Netzwerk klicken. Kopieren -> Als cURL kopieren. Es enthält alle Header, Cookies usw.
quelle