「cURL」を使用してリクエストしたときにクッキーパスを無視する方法

「cURL」を使用してリクエストしたときにクッキーパスを無視する方法

2つのWebサービスがあります

  1. https://localhost/svc/auth まず、認証ヘッダーとして呼び出してからクッキーを取得します。

  2. 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番目のカールを実行します。

関連情報