Albus log - 3
Cookie 설정
express response에 set-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