20.02.03 프론트, 백엔드 쿠키 통일 & 배포용으로 cors 수정

sykim·2020년 2월 3일
0

로컬 백엔드 서버 쪽 미들웨어 세팅 수정 사항

프론트엔드와 백엔드 서버가 달라서 생기는 문제 중 하나가 공통된 쿠키값을 읽지 못하는 부분이고 아래 코드들은 그 문제를 해결하기 위한 수정 내용이다.

const production = process.env.NODE_ENV === 'production';
...
app.use(expressSession({
    resave : false,
    saveUninitialized : false,
    secret : process.env.COOKIE_SECRET,
    // 자바스크립트로 쿠키에 접근 못하게 보안
    cookie : {
        httpOnly : true,
        secure : false, // https 사용시 true
        domain : production && '.rgproject.co.kr',
    },
    ...
}));
  • cookie 옵션 중 domain 추가.
  • 해당 값을 '.도메인'으로 사용해야 프론트엔드 주소와 백엔드(api.도메인) 주소를 둘 다 해당시킨다.

cors 분기 처리

if (production) {
    app.use(hpp());
    app.use(helmet());
    app.use(morgan('combined'));
    app.use(cors({
        origin : 'http://rgproject.co.kr',
        credentials : true,
    }));
} else {
    // 백엔드 서버로 요청 들어오는 기록들을 보여줌
    app.use(morgan('dev'));
    // Access-Control-Allow-Origin 에러 처리
    app.use(cors({
        origin : true,
        credentials : true,
    }));
}
  • production 모드일 때와 그렇지 않을 때(development 모드)로 분기.
  • production 모드일 때 필수 보안 패키지 추가.
  • production 모드일 때 cors 옵션을 도메인으로 기재해야 그 외의 요청을 받지 않는다.

중요! 위 수정 부분은 htpp에 대한 지식이 있어야 오류 대응이 가능하다고 한다. (추천 받은 서적 : 'http 완벽 가이드')

profile
블로그 이전했습니다

0개의 댓글