日々のあれこれφ(..)

もっぱら壁打ち

curlでcookieを取り扱う

curl歴は長いのにcookieを取り扱ったことがなく、今日初めて調べて知ったので忘備録がてらメモ。

ファイルを使うやり方と直指定するやり方がある。

ファイルを使う

-ccookieをローカルファイルに出力する。

curl -X POST -c ./cookies.txt \ 
-H "content-type: application/json" \
http://127.0.0.1:3000/api/signin \
-d '{"email": "p1@test.com", "password": "aaa"}'

cookies.txtの中身は以下のようになった

# Netscape HTTP Cookie File
# https://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

#HttpOnly_127.0.0.1 FALSE   /   FALSE   0   session eyJ1c2VyX2lkIjoxMH0.YhswoA.H17TpdD5PHlcdUFVzXrUdyWOjGg

-b で指定したファイルのcookieを読み取る

curl -X POST -b ./cookies.txt \
-H "content-type: application/json" \
-H "Authorization: Bearer TOKEN" \
http://127.0.0.1:3000/api/signout

直指定

curl -vでcookieの中身を確認

curl -v -X POST \
-H "content-type: application/json" \
http://127.0.0.1:3000/api/signin \
-d '{"email": "p1@test.com", "password": "aaa"}'

出力内容の一部を抜粋。

...
< HTTP/1.0 200 OK
< Content-Type: text/html; charset=utf-8
< Content-Length: 155
< Vary: Cookie
* Added cookie session="eyJ1c2VyX2lkIjoxMH0.YhsuJQ.zno-TQJjdDOvOzlTnu6fAfoYrq0" for domain 127.0.0.1, path /, expire 0
< Set-Cookie: session=eyJ1c2VyX2lkIjoxMH0.YhsuJQ.zno-TQJjdDOvOzlTnu6fAfoYrq0; HttpOnly; Path=/
...

-H "Cookie: " で中身を指定する

curl -X POST -H 'Cookie: session="eyJ1c2VyX2lkIjoxMH0.YhsuJQ.zno-TQJjdDOvOzlTnu6fAfoYrq0"' \
-H "content-type: application/json" \
-H "Authorization: Bearer TOKEN" \ 
 http://127.0.0.1:3000/api/signout

余談

ファイルの中身、以下のようにすればいけるのではと思ったけどいけなかった🤔

session eyJ1c2VyX2lkIjoxMH0.YhswoA.H17TpdD5PHlcdUFVzXrUdyWOjGg

とか

session="eyJ1c2VyX2lkIjoxMH0.YhswoA.H17TpdD5PHlcdUFVzXrUdyWOjGg"

など