対象者
APIのログイン周りのリクエスト等を楽にしたいと思っている人
Chromeに複数のユーザでログインしてる人
環境
Postman for Chrome v5.0.2
Postman Interceptor v0.2.23
何が罠か
「Postman Intercepter」Cookie利用時のREST用ツール
こちらの記事を参考に、ログインしようとしているとどうにも違うCookieがPOSTされている気がした。
最初は、ドメインが同じ(開発環境だったのでlocalhost)、別のCookieが送られているのかと思った。
けど、よくよく考えてみると、Railsでは secrets.yml
のsecret_key_base
で暗号化されてるので、別のプロジェクトのcookieを復号できる訳がないと思った。
いろいろ調査していると、Chromeで複数のユーザでログインしていると、Postman Interceptorが想定している動きをしない。
具体的にどういうバグかというと、ユーザA(デフォルトユーザ)とユーザBがいるとする。
Postman InterceptorをユーザBの方のChromeでオンにして、開発しているサイトにログインする。
PostmanでもInterceptorをオンにする。
何故か、ユーザAのCookieが確定で送られてくる。
この挙動を見ていると、デフォルトユーザのCookieがどんな場合でも送られているっぽい。
解決策
デフォルトユーザ(ユーザA)のChromeでInterceptorをオンにして、デフォルトユーザのChromeでログイン処理をする。
これだけのことなんだけど、結構時間を使ってしまった。
デバッグにnc
が便利でnc -l 9999
とかで サーバを立てて、そこにPostmanでリクエストするとCookieの値が見える。その値がChromeの開発者ツールで見れるCookieの値と違うならば、何かがおかしいということになる。