web-dev-qa-db-fra.com

Comment utiliser cURL pour envoyer des cookies?

Je lis que Envoyer des cookies avec curl fonctionne, mais pas pour moi

J'ai un noeud final REST comme

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 en tant que

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?

256
daydreamer

Cela a fonctionné pour moi

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

Je pouvais voir la valeur dans le backend en utilisant

print request.cookies
419
daydreamer

vous pouvez vous référer à https://curl.haxx.se/docs/http-cookies.html pour obtenir un didacticiel complet sur l'utilisation des cookies. vous pouvez utiliser

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

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

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

lire les cookies à partir de et démarrer le moteur de cookies, ou s'il ne s'agit pas d'un fichier, il passera sur la chaîne donnée.

70
Moeen M

Vous utilisez un format incorrect dans votre fichier de cookie. Comme documentation curl , il utilise un ancien format de fichier de cookie Netscape, qui est différent du format utilisé par les navigateurs Web. Si vous devez créer un fichier de cookie curl manuellement, cet article 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 une tabulation signifiant domaine , tailmatch , chemin , sécurisé , expire , nom , valeur .

30
yurloc