Hoe Curl te gebruiken om cookies te verzenden?

Ik heb dat gelezen Stuur cookies met krul werken, maar niet voor mij.

Ik heb een RESTeindpunt als:

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

Wanneer ik probeer toegang te krijgen 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"%

waar mijn ~/Downloads/cookies.txtis:

cat ~/Downloads/cookies.txt
USER_TOKEN=in

en de server ontvangt niets:

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 -

Wat is dat ik mis?


Antwoord 1, Autoriteit 100%

Dit werkte voor mij:

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

Ik kon de waarde in de backend zien met

print(request.cookies)

Antwoord 2, autoriteit 17%

Je kunt verwijzen naar https://curl.haxx.se/docs/http- cookies.htmlvoor een volledige handleiding over hoe u met cookies kunt werken. U kunt

. gebruiken

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

om naar een cookiebestand te schrijven en de motor te starten en om een cookie te gebruiken, kunt u

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

om cookies uit te lezen en de cookie-engine te starten, of als het geen bestand is, geeft het de gegeven string door.


Antwoord 3, autoriteit 8%

U gebruikt een verkeerde indeling in uw cookiebestand. Zoals curldocumentatiestelt, gebruikt het een oud Netscape-cookiebestandsformaat, dat verschilt van het formaat dat wordt gebruikt door web browsers. Als je handmatig een curl-cookiebestand moet maken, zou dit berichtje moeten helpen. In uw voorbeeld zou het bestand de volgende regel moeten bevatten

127.0.0.1   FALSE   /   FALSE   0   USER_TOKEN  in

met 7 door TAB gescheiden velden, wat betekent domein, tailmatch, pad, secure, verloopt , naam, waarde.


Antwoord 4

Als u dat verzoek in uw aanvraag al hebt ingediend en deze inloggen in Google Dev-gereedschappen hebt ingelogd, kunt u de opdracht kopiëren Curl gebruiken in het contextmenu wanneer u met de rechtermuisknop op het verzoek op het tabblad Netwerk klikt. Kopiëren – & GT; Kopiëren als krullen.
Het bevat alle headers, cookies, enz.


Antwoord 5

Ik gebruik Debian, en ik kon Tilde niet gebruiken voor het pad. Oorspronkelijk gebruikte ik

curl -c "~/cookie" http://localhost:5000/login -d username=myname password=mypassword

Ik moest dit veranderen in:

curl -c "/tmp/cookie" http://localhost:5000/login -d username=myname password=mypassword

-cCreëert de cookie, -bgebruikt de cookie

Dus dan zou ik bijvoorbeeld gebruiken:

curl -b "/tmp/cookie" http://localhost:5000/getData

Antwoord 6

curl -H @<header_file> <host>

Aangezien Curl 7.55-headers uit het bestand worden ondersteund met @<file>

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

curl -H @/tmp/cookie <host>

DOCS & AMP; commit

Other episodes