curlでcookieを取り扱う
curl歴は長いのにcookieを取り扱ったことがなく、今日初めて調べて知ったので忘備録がてらメモ。
ファイルを使うやり方と直指定するやり方がある。
ファイルを使う
-c
でcookieをローカルファイルに出力する。
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 -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"
など