Albus log - 3

Cookie 설정

서버가 보내는 응답에 set-cookie header가 있는데 이 속성을 통해 클라이언트 쿠키에 원하는 정보를 저장시킬 수 있다.

cookie-parser 를 사용해 간단히 이 설정을 할 수 있다.

import * as cookieParser from "cookie-parser";

app.use(cookieParser());

// 메소드 안
res.cookie('access_token', token, {
//        httpOnly: true, // XSS 방지
        maxAge: 1000 * 60 * 60 * 24 * 7, // 7d
//        domain: "localhost:3000"
      });

쿠키를 사용하기 위해서는 cors 설정 필요

클라이언트 요청 측(axios)

login = async (accessToken) => {
    const option = {
      headers: {
        'Content-Type': 'application/json'
      },
      method: 'post',
      data: {
        accessToken: accessToken
      },
      withCredentials: true, // HTTP Cookie와 HTTP Authentication 정보를 인식할 수 있게 해줌
      url: this.serverHost + '/auth/googleLogin'
    };

    try {
      return await axios(option);
    } catch (e) {
      throw e
    }
  };

서버 측(express)

cors 모듈 사용

credentials 가 true일 경우 origin이 ‘*‘(모든 호스트)인 것을 막는다.

그러니 origin 속성에 사용할 클라이언트의 주소를 배열이나 문자열로 적어준다.

this.app.use(cors({
  credentials : true,
  origin: 'http://localhost:3000' // 클라이언트 주소
}));




참조

https://github.com/expressjs/cors

https://stackoverflow.com/questions/19743396/cors-cannot-use-wildcard-in-access-control-allow-origin-when-credentials-flag-i

https://stackoverflow.com/questions/49189058/cors-allow-credentials-nodejs-express

김땡땡's blog

김땡땡's blog

김땡땡