FaradayとHttpartyでクッキーを付与したい場合
同一ドメインなんだけどホスト名が違うシステムがあり、WEBサーバーからApiサーバーへjsonを取得するべくgetリクエストを投げる。
その際にWEBサーバーでログイン時に発行されたクッキーをリクエストに付与してapiサーバーではそのクッキーからユーザを特定するような処理が必要になった。
FaradayとHttpartyでクッキーを付与する方法を調べた。
Faraday
miyagawa/faraday-cookie_jarというクッキーをよしなに扱ってくれるみたいですが、特に使わなくてもいけました。
1
2
3
4
5
6
7
8
9
10
11
| client = Faraday.new 'http://example.com/api/list' do |b|
b.request :json
b.request :url_encoded
b.adapter Faraday.default_adapter
end
res = client.get '' do |req|
req.headers['Cookie'] = request.headers["HTTP_COOKIE"]
end
puts res.body
|
Httparty
1
2
3
4
5
| include HTTParty
self.default_cookies.add_cookies(cookies.to_h)
res = self.get('http://example.com/api/list')
p res.inspect
|
お手軽ですね!
2015年10月19日追記
Httpartyのヘッダに乗せるタイプ
1
2
3
4
| include HTTParty
res = self.get('http://example.com/api/list', headers: "Cookie" => request.headers["HTTP_COOKIE"])
p res.inspect
|