AxiosでCookieを送信してSessionを共有する

2019-09-23

ブラウザのSessionCookieなどをaxiosでそのままサーバーに送信したい時は以下のようにセットする。

    axios.get('url',
      {
        withCredentials: true
      }
    )

そしてサーバー側は次のように許可する。 (cors使用)

      import * as express from "express";
      const cors = require('cors')
      const app = express()
      app.use(cors({credentials: true, origin: true}));

これだけでブラウザのsession情報がAxiosによってサーバーと通信できる。

サーバサイドからAxiosでCookieセット

ブラウザにレスポンスする前にサーバーサイドからWebAPIを叩きたい時もある。

そしてその通信にもブラウザのCookieを送信したい時も当然ある。その場合はwithCredentialsではエンドポイントにブラウザのCookieは送信できない。(サーバーサイドからの通信なので当然)

そんな時は、Cookieを以下のようにセットする。

    auth.get('/', function(req, res, next) {
          axios.get('url',
            headers: {
                Cookie: req.headers.cookie
            }
          )
    });

headersにExpressのrequestをそのままセットするだけ。