お世話になっております。
外部APIでレスポンスヘッダーに以下のような複数個の Set-Cookie を返してくるものがあります。
これを kintone.proxy で呼び出すと、Set-Cookie は最初の1つしか取得できないようです。
すべての Set-Cookie を取得する方法があれば教えて下さい。
レスポンスヘッダーの例 (実際の値から改変しています。)
HTTP/1.1 200 OK
Date: Sat, 03 Sep 2016 13:42:22 GMT
Set-Cookie: SSID=xxxxx; Expires=Sat, 03-Sep-2016 14:42:23 GMT; Path=/
Set-Cookie: OVERRIDE=; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/
Set-Cookie: RXID=xxxx; Expires=Sat, 03-Sep-2016 14:42:23 GMT; Path=/
Set-Cookie: SSID=; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/
Set-Cookie: JSESSIONID=xxxx.cluster1_001; Path=/b2
Content-Type: text/xml;charset=UTF-8
Connection: close
Content-Length: 213
日向 弘一さん
cstapの瀧ヶ平です
kintone.proxyでset-cookieヘッダを一つしか取れないとなると、多少面倒にはなりそうですね、
利用する外部APIのAccess-Control-Allow-Originヘッダで サブドメイン.cybozu.com が許可されている(または許可することが可能である)のであれば、直接XMLHttpRequestを生成してヘッダを読み込み、XMLHttpRequestでは同一のヘッダが複数ある場合はカンマと空白で区切って連結されるようなので、それを踏まえた上で正規表現でパースすることは考えられますね。(私の環境では未検証ですが、kintone.proxyのset-cookieヘッダの情報がすでに複数のset-cookieヘッダを連結したものであるならば、適当な正規表現によるパーサーを用意するだけで済むかと思います。)
Access-Control-Allow-Originの変更が出来ないのであれば、自前で利用する外部APIにプロキシ通信するようなAPIを外部に用意する必要があると思います。
参考になれば幸いです
瀧ヶ平さん。
返信ありがとうございます。
今回の外部API は cybozu.com への Access-Control-Allow-Origin がなく XMLHttpRequest での直接アクセスはできませんでした。
他社サービスのAPIのため Access-Control-Allow-Origin を追加するのを難しいです。
>kintone.proxyのset-cookieヘッダの情報がすでに複数のset-cookieヘッダを連結したものであるならば、適当な正規表現によるパーサーを用意するだけで済むかと思います。
残念ながら連結した値にはなっていません。上記の例でいうと最初の
Set-Cookie: SSID=xxxxx; Expires=Sat, 03-Sep-2016 14:42:23 GMT; Path=/
だけが Set-Cookie 値として得られます。
>Access-Control-Allow-Originの変更が出来ないのであれば、自前で利用する外部APIにプロキシ通信するようなAPIを外部に用意する必要があると思います。
やはりそうなりますか…。Amazon API Gateway などでやるしかないようですね。
kintone.proxy が Set-Cookie を連結して返すオプションがあればよかったのですが、残念です。