묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
배포 후 log out 쿠키 삭제
안녕하세요. 현재 제로초님과 같은 코드로 passport-local로 로그인과 로그아웃을 구현하였습니다. 배포 후 https환경에서 log out하였을때 브라우저 상에서 쿠키가 삭제되지 않는것 같아서 질문드립니다 ㅠ 프론트와 백엔드는 같은 도메인을 사용하고 있고 서브도메인만 다른 상황입니다 ! (프론트: dimelo.io, 백엔드: api.dimelo.io) (https://stackoverflow.com/questions/13758207/why-is-passportjs-in-node-not-removing-session-on-logout 여기 글을 보고 req.session.destroy(function() { res.clearCookie('connect.sid'); }); 이렇게 해보았지만 그래도 안됐습니다 ...)
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
express aws 배포 후 세션 - 쿠키
선생님, 안녕하세요. 사실 이 질문이 여기에 해도 되는 질문인지 잘 모르겠지만 답변해주시면 감사하겠습니다. nest.js를 학습하기에 앞서 express 를 복습하고자 전에 개인적으로 만들었던 거를 한번 복습 후, 이번에 aws ec2에 배포까지 해보게 되었습니다. 로그인을 session으로 구현하였는데, 로컬에서는 클라이언트에 쿠키가 잘 전달 되었지만, ec2에 올리고 난 후 클라이언트에 쿠키가 전달되지 않아 도움을 청하고자 합니다. 우선 서버쪽 CORS 설정과 세션 설정은 이렇게 해주었습니다. app.use( cors({ origin: [ 'https://jh-client.ga' // 배포한 client url ], preflightContinue: true, credentials: true, }) ); app.use( session({ secret: 'jjj', proxy: true, store: new RedisStore({ client: redisClient, ttl: 3600 * 24 * 3, //3600초 = 1시간 // ttl: 10, }), saveUninitialized: true, resave: false, name: 'MySessionKey', cookie: { sameSite: 'none', secure: true, // httpOnly : true, // maxAge: 1000 * 60 * 60, // 1000밀리세컨드 : 1초 maxAge: 1000 * 60 * 60 * 5, }, }) ); 클라이언트와 server 모두 ACM을 통해 https 설정을 해주었고, 클라이언트에는 cloud front, 서버에는 elastic load balancer 도 적용해주었습니다. stack over flow나 다른 곳들을 찾아본 결과, sameSite = 'none', secure = true 설정을 해주면 대부분 된다고 하던데 (물론 클라이언트에서 axios 요청을 보낼때도 withCredentials : true 설정을 해주었습니다.) 저는 이것 외에도 추천하는 다양한 방법들을 시도해보았지만 잘 해결되지 않아 너무 답답한 마음에 질문 드렸습니다. 꼭 답변해주시면 감사하겠습니다 감사합니다~~
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
getServersideProps session 질문
안녕하세요! 강좌를 바탕으로 블로그를 제작하는 중에, 방문자 수를 counting 하는 기능을 구현하는데 막혀 질문드립니다. front server에서 getServerSideProps에 있는 export const getServerSideProps = wrapper.getServerSideProps(async (context) => { const cookie = context.req ? context.req.headers.cookie : ''; axios.defaults.headers.Cookie = ''; if (context.req && cookie) { axios.defaults.headers.Cookie = cookie; } context.store.dispatch({ type: LOAD_MY_INFO_REQUEST, }) context.store.dispatch({ type: LOAD_POSTS_REQUEST, }); context.store.dispatch(END); await context.store.sagaTask.toPromise(); }); LOAD_MY_INFO_REQUEST와 LOAD_POSTS_REQUEST를 이용해 back server에 요청을 날리면 back server에서는 app.js의 최상단에 존재하는 let count = 0; app.use((req,res,next) => { var date = new Date(); var today=date.getYear()+" "+date.getMonth()+" "+date.getDate(); console.log("lastvisit : " + req.session.lastVisit); if(req.session.lastVisit != today){ req.session.lastVisit = today; count++; } next(); }); 다음 함수를 이용해 방문자 수를 count할려고합니다! 문제는 front에서 먼저, LOAD_MY_INFO_REQUEST로 요청을 보내, session과 함께 응답을 받고 다시 LOAD_POSTS_REQUEST요청을 하면, 요청에는 첫번째 요청의 응답으로 넣어주었던 session이 존재하지 않는다는 점입니다. 몇일동안 잡고 있어도 도저히 해결책을 모르겠어 질문드립니다.
-
미해결화이트해커가 되기 위한 8가지 웹 해킹 기술
팝업창의 BEEFHOOK 정보 제거
스크립트 태그로 low 단계의 쿠키정보를 불러오는 곳에서 beef 까지 실습을 한 후 다시 쿠키정보를 불러오려니까 팝업창에 실습시 뜨는 쿠키정보와 더불어 BEEFHOOK 정보까지 같이 뜨는데 원래 보이는 것처럼 이를 없애고 싶습니다. 어떻게 되돌리나요?
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
Nginx Cookie Secure 관련 문의
안녕하세요. 스스로 해결해보려고 다양하게 시도했지만 문제 해결이 어려워 문의드립니다. back 쪽에서 nginx.conf 를 아래와 같이 수정했고, proxy_set_header 이외 넣어보라는 것들 5개 정도 넣어봤지만 잘안됐습니다. (restart) 후 systemctl status nginx 특별한 오류 없이 잘 작동됩니다. 1) 해결하기 위한 노력 app.set('trust proxy', 1); --> app.enable('trust proxy'); 로 수정 해봤습니다. 2) 해결하기 위한 노력 proxy, secure 모두 true 상태에서 계속해서 secure 체크가 안됩니다. true를 process.env.NODE.ENV === 'production'으로 수정을 해봤습니다. 계속해서 secure 체크가 안됩니다. 추가적으로 수정해야 할 부분이 있는지 문의 드립니다. if (process.env.NODE_ENV === 'production') { app.set('trust proxy', 1); app.use(morgan('combined')); app.use(hpp()); app.use(helmet({ contentSecurityPolicy: false })); app.use(cors({ origin: 'https://kakao.gg', credentials: true, }));} else { app.use(morgan('dev')); app.use(cors({ origin: true, credentials: true, }));}app.use('/', express.static(path.join(__dirname, 'uploads')));app.use(express.json());app.use(express.urlencoded({ extended: true }));app.use(cookieParser(process.env.COOKIE_SECRET));app.use(session({ saveUninitialized: false, resave: false, secret: process.env.COOKIE_SECRET, proxy: true, cookie: { httpOnly: true, secure: true, domain: process.env.NODE_ENV === 'production' && '.kakao.gg' },}));
-
미해결실전 JSP (renew ver.) - 신입 프로그래머를 위한 강좌
loginok에서
login.jsp 화면에서 아이디 비밀번호 입력하면 loginok로 가서 정상적으로 쿠키 정보 확인되는데 다시 login.jsp로 가면 loginok.jsp가 아닌 다시 입력창이나오네요 어떻게 해야할까요 코드는 동일합니다
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
쿠키에 관련해서 질문드립니다.
안녕하세요. 강의를 듣고 여러 프로젝트를 하면서 개념이 정리가 잘되지 않아서 이렇게 질문 드립니다. 실제로 일을 하다보면 여러 쿠키에 대한 여러 설정값이 나오더라구요. withcredentials, sameSite, secure, httponly 등등... 첫 번째로 서로 다른 도메인에서 쿠키를 주고 받으려면 클라, 서버 둘 다 withcredential = true 로 설정해야 된다는 것을 알고 있습니다. 만약 클라가 aaa.com이고 api요청을 api.aaa.com을 가지고 있는 서버에 준다고 하면 withcredential에 대한 설정을 어떻게 해야 하는 건지 궁금합니다. aaa.com과 api.aaa.com은 sameSite이고 서로 다른 origin 인것까지는 이해했습니다. 인터넷에 여러 글을 찾아봐도 어떤 글은 서로 다른 도메인간의 쿠키 전달이라고 명시되어 있는 반면 아떤 글은 서로 다른 origin 간의 쿠키 전달 옵션이라고 되어 있어 혼란스럽습니다. 결론적으로 1. 도메인과 서브 도메인의 도메인 일치 여부 2. withcredential 옵션의 기준 -> 서로 다른 도메인인지, 서로 다른 origin인지 3. sameSite 가 같은 도메인을 의미하는지 그래서 클라: aaa.com 서버: api.aaa.com 환경에서 withCredentials 설정을 해줘야하는지 궁금합니다. 답변해주시면 감사합니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
질문아니고 내용공유
쿠키못가져올 때 이렇게 하면댐. //Client Cookie에서 Token을 가져온다. let token = req.headers.cookie.split('x_auth=')[1];