我有两个网络服务
https://localhost/svc/auth 我首先使用授权标头调用它,然后得到一个 cookie
https://localhost/svc/catalog/1234我通过提供第一次调用设置的 cookie 来调用它
我正在尝试使用这样的 cURL 来获取目录“1234”:
curl -u Username:Password -s -i -X GET 'http://localhost/svc/auth' -c /tmp/site-cookie.txt
curl -b /tmp/site-cookie.txt -s -i -X GET 'http://localhost/svc/article-stock/v1/car/CRH4203052?sid=esi&channel=str&site=0148'
但这不起作用,因为 cookie 的路径设置如下:
# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.
localhost FALSE /svc/auth FALSE 0 MYCOOKIE VXNlcm5hbWU6RU5DKFFva0VSaDdaMXpKTHRYRHJIUzlvaXVuakVpbURHYmsyaDFRUXlvclA4RD0p
我知道我可以要求 Web 服务开发人员更改其 cookie 中的路径,但我想知道 cURL 是否可以忽略此类路径或不保存它?
答案1
如果您对服务器想要的内容有信心,则可以在收到 cookie 后对其进行编辑,从而扩展它所适用的 URL。例如,在第一个curl命令之后添加一个sed来删除url路径的尾部部分(/auth
):
sed -i -e '/^localhost/s|/auth||' /tmp/site-cookie.txt
然后运行第二个curl,它将传递cookie,因为它现在与url ( /svc
) 的开头匹配。