我读到sending 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 -
我错过了什么?
9条答案
按热度按时间s6fujrry1#
这对我很有效:
我可以看到后端使用的价值
r55awzrz2#
你可以参考https://curl.haxx.se/docs/http-cookies.html来获得如何使用cookies的完整教程。
写入cookie文件并启动引擎,以及使用您可以使用的cookie
读取cookie并启动cookie引擎,或者如果它不是文件,它将传递给定的字符串。
pbwdgjma3#
您在cookie文件中使用了错误的格式。如curl documentation所述,它使用的是旧的Netscape cookie文件格式,与Web浏览器使用的格式不同。如果您需要手动创建curl cookie文件,this post可以帮助您。在您的示例中,该文件应包含以下行
具有7个TAB分隔的字段,表示 * 域 、 尾匹配 、 路径 、 安全 、 过期 、 名称 、 值 *。
xa9qqrwz4#
curl -H @<header_file> <host>
由于
@<file>
支持来自文件的curl 7.55标头echo 'Cookie: USER_TOKEN=Yes' > /tmp/cookie
curl -H @/tmp/cookie <host>
文档和提交
6ie5vjzr5#
如果您已经在应用中发出了该请求,并在Google Dev Tools中看到了该请求,则可以在网络选项卡中右键单击该请求时使用上下文菜单中的复制cURL命令。复制-〉复制为cURL。它将包含所有头部、Cookie等。
btxsgosb6#
我用的是Debian,但是我不能用波浪号作为路径。最初我用的是
我不得不将其更改为:
-c
创建cookie,-b
使用cookie所以我会用这个例子:
hpcdzsge7#
另一个使用json的解决方案。
curl :
PYTHON代码:
krcsximq8#
以下是发送Cookie的正确方法示例。
-H 'cookie: key1=val2; key2=val2;'
cURL也提供了
--cookie
的便利。这是从Chrome浏览器〉检查〉网络〉复制为cURL。
bgtovc5b9#
我在Windows上使用GitBash,但没有找到任何适合我的。
所以我决定将我的cookie保存到一个名为
.session
的文件中,并使用cat读取它,如下所示:如果你好奇的话,我的饼干是这样的: