如何在使用“cURL”请求时忽略 cookie 路径

如何在使用“cURL”请求时忽略 cookie 路径

我有两个网络服务

  1. https://localhost/svc/auth 我首先使用授权标头调用它,然后得到一个 cookie

  2. 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) 的开头匹配。

相关内容