我读到用cURL发送cookie有用,但不适合我。

我有一个这样的REST端点:

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

当我尝试访问端点时,它拒绝:

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

我的~/Downloads/cookies.txt是:

cat ~/Downloads/cookies.txt
USER_TOKEN=in

服务器什么也收不到:

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 -

我错过了什么?


当前回答

我在Windows上使用GitBash,我发现没有什么对我有用。

所以我决定将我的cookie保存到一个名为.session的文件中,并使用cat从它读取,如下所示:

curl -b $(cat .session) http://httpbin.org/cookies

如果你好奇,我的饼干是这样的:

session=abc123

其他回答

这招对我很管用:

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

我可以看到后端使用的价值

print(request.cookies)

如果您已经在应用程序中发出了该请求,并且看到它已登录到谷歌Dev Tools中,那么您可以在网络选项卡中的请求上右键单击上下文菜单中使用复制cURL命令。Copy ->复制为cURL。 它将包含所有的头文件,cookie等。

我在Windows上使用GitBash,我发现没有什么对我有用。

所以我决定将我的cookie保存到一个名为.session的文件中,并使用cat从它读取,如下所示:

curl -b $(cat .session) http://httpbin.org/cookies

如果你好奇,我的饼干是这样的:

session=abc123

curl -H @<header_file> <host>

由于curl 7.55文件头文件支持@<file>

echo 'Cookie:用户-令牌=Yes > /tmp/ Cookie

curl -H @/tmp/cookie <主机>

文档和提交

我正在使用Debian,我无法使用波浪线为路径。最初我用的是

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

我必须将其更改为:

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

-c创建cookie, -b使用cookie

所以我会用例如:

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