2つのWebサービスがあります
https://localhost/svc/auth まず、認証ヘッダーとして呼び出してからクッキーを取得します。
https://localhost/svc/catalog/1234最初の呼び出しで設定されたクッキーを提供して呼び出します。
次のように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'
しかし、クッキーパスは次のように設定されているため、これは機能しません。
# 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を受け取った後にCookieを編集してCookieが適用されるURLを拡張できます。たとえば、最初のカールコマンドの後にsedを追加して、URLパス(/auth
)の末尾の部分を削除します。
sed -i -e '/^localhost/s|/auth||' /tmp/site-cookie.txt
/svc
次に、URL()の先頭に一致するので、クッキーを渡す2番目のカールを実行します。