Comment utiliser cURL pour envoyer des Cookies?

j'ai lu que envoyer des cookies avec curl fonctionne, mais pas pour moi

j'ai un REST endpoint

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

quand j'essaie d'accéder comme

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"%

où mon ~/Downloads/cookies.txt est

cat ~/Downloads/cookies.txt
USER_TOKEN=in

et le serveur ne reçoit rien

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 -

qu'est-ce que je manque?

203
demandé sur ivanleoncz 2013-04-14 08:48:57

3 réponses

cela a fonctionné pour moi

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

je pouvais voir la valeur en arrière-plan en utilisant

print request.cookies
345
répondu daydreamer 2013-04-14 05:32:08

vous pouvez vous référer à https://curl.haxx.se/docs/http-cookies.html pour un tutoriel complet sur la façon de travailler avec les cookies. vous pouvez utiliser

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

pour écrire dans un fichier cookie et démarrer le moteur et pour utiliser le cookie vous pouvez utiliser""

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

pour lire les cookies et démarrer le moteur de cookies, ou si ce n'est pas un fichier, il passera sur la chaîne donnée.

54
répondu Moeen M 2017-01-22 23:36:18

vous utilisez un mauvais format dans votre fichier cookie. Comme curl documentation indique, il utilise un vieux format de fichier de cookie Netscape, qui est différent du format utilisé par les navigateurs web. Si vous avez besoin de créer un fichier de cookie curl manuellement, ce post devrait vous aider. Dans votre exemple, le fichier doit contenir la ligne suivante

127.0.0.1   FALSE   /   FALSE   0   USER_TOKEN  in

ayant 7 champs séparés par des onglets qui signifient domaine , tailmatch , chemin , sécurisé , expire , nom , valeur .

16
répondu yurloc 2014-12-16 16:25:10