Access to XMLHttpRequest at 'https://port-0-road-pick-be-mavxgd0f1140ffb1.sel4.cloudtype.app//auth/profile' from origin 'https://roadpick.vercel.app' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
router.post(
'/login',
...생략
res
.cookie('token', token, {
httpOnly: true,
secure: process.env.NODE_ENV === 'production',
sameSite: process.env.NODE_ENV === 'production' ? 'None' : 'Lax',
path: '/',
maxAge: 1000 * 60 * 60, // 1시간
})
.json({ message: '로그인 성공' })
} catch (err) {
console.error(err)
return res.status(500).json({ message: '서버 에러' })
}
}
)
// ── 로그아웃
router.post('/logout', (req, res) => {
res
.cookie('token', '', {
httpOnly: true,
secure: process.env.NODE_ENV === 'production',
sameSite: 'Strict',
path: '/',
maxAge: 0,
})
.json({ message: '로그아웃 되었습니다.' })
})
쿠키 설정 시 secure과sameSite와 로그아웃 시에도 로그인 시와 동일한 쿠키 옵션(sameSite, secure, path)을 사용해야 쿠키가 제대로 삭제된다.
// ── 로그아웃
router.post('/logout', (req, res) => {
res
.cookie('token', '', {
httpOnly: true,
secure: process.env.NODE_ENV === 'production',
sameSite: process.env.NODE_ENV === 'production' ? 'None' : 'Lax',
path: '/',
maxAge: 0,
})
.json({ message: '로그아웃 되었습니다.' })
})