티스토리 뷰
A cookie associated ... `SameSite` attribute ( Node.js example for SameSite=None; Secure )
serpiko 2020. 8. 24. 15:41
Node.js example for SameSite=None; Secure
크롬에서 도메인이 다은경우 쿠키가 전송되지 않는 문제
A cookie associated with a cross-site resource at <URL> was set without the `SameSite` attribute. It has been blocked, as Chrome now only delivers cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at <URL> and <URL>.
https://en.wikipedia.org/wiki/HTTP_cookie#SameSite_cookie
github.com/GoogleChromeLabs/samesite-examples
SameSite=None, Secure=True 옵션을 주기위해서 제일먼저 express의 버전을 4.17.1 로 업글했다
(invalid SameSite Option 이 떠서...)
그리고 cookie의 버전을 0.4.1 로 올렸다
(버전 0.3.1부터 SameSite속성을 지원하고 버전 0.4.0부터 None값을 지원합니다 .)
// Set a same-site cookie for first-party contexts
response.cookie('cookie1', 'value1', { sameSite: 'lax' });
// Set a cross-site cookie for third-party contexts
response.cookie('cookie2', 'value2', { sameSite: 'none', secure: true });
이전 버전을 사용하는 경우를 Set-Cookie사용하여 헤더를 직접 보내야합니다 response.setHeader(). 이것을 호출하면 프로세스 초기에 설정 한 모든 것을 덮어 쓰므로 여기에서 모든 쿠키를 설정해야합니다.
response.setHeader('set-cookie', [
'cookie1=value1; SameSite=Lax',
'cookie2=value2; SameSite=None; Secure',
]);
실제적용은..
cookies.setCookie = (res, token) => {
res.cookie("access_token", token, {
sameSite:'none',
secure: true, // https, ssl 모드에서만
maxAge: 1000*60*60*24*1, // 1D
httpOnly: true, // javascript 로 cookie에 접근하지 못하게 한다.
});
}
'■ 백엔드 ■ > NodeJS' 카테고리의 다른 글
express res.status 처리 (0) | 2020.09.12 |
---|---|
기존 cookie clear의 한계, 그냥 cookie overwrite로 해결 (0) | 2020.09.04 |
express - multiple routes in a single line (0) | 2020.07.21 |
nodemon (0) | 2020.07.09 |
NodeJS - Port 3000 is already in use... (0) | 2020.07.07 |