【发布时间】:2013-04-06 10:19:55
【问题描述】:
我读到Send cookies with curl 有效,但不适用于我。
我有一个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 -
我错过了什么?
【问题讨论】:
-
我认为添加
-c选项会告诉curl使用您的cookie 文件作为输出cookie jar,这可能不是您想要的。 -
仅带有
-b选项的那个也不起作用,给出同样的错误:( -
-bcookie 文件的格式不只是var=value,它应该与使用-c编写的cookie jar 的格式相同。使用此选项转到发送 cookie 的站点,然后查看生成的文件。 -
-b cookie_file 应该是 Netscape/Mozilla 格式或纯 HTTP 标头。这是一个简单的 http 标头示例: Set-cookie: cookie_name=cookie_value;这是最低限度的。不要忘记末尾的分号。
标签: rest session curl flask session-cookies