묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
쿠키의 중복
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
세션을 사용할 수 있다면, URL를 설계할때, /member/{id} 와 같이 PathVariable를 가져갈 필요가 있을까요?
'모든개발자를 위한 HTTP웹 기본지식' 에서 배운 바로는 URL를 설계할때, 회원조회를 위한 url 이라 치면, "/member/{id}" 같이 PathVariable인 회원id 값을 url에 명시해 두었습니다.그런데 이번에 쿠키와 세션을 학습하면서 느낀건데, 애초에 그냥 "/member" 로만 해도, 로그인한 세션값으로 회원 정보를 가져와 해당 회원에 맞는 화면을 응답해도 되지 않을까요?비슷한 또 다른 예시인데,userA가 자신이 주문한 item들을 전체 조회하고자 할때 요청할 url를"/orders/{memberId}" 로 하여 memberId를 통해 회원객체를 조회하고, 조회한 객체의 주문목록을 화면으로 뿌려주는것보다는,"/orders" 로만 url을 잡고 세션값을 통해 현재 요청을 날린 회원 객체를 받아 주문목록을 화면에 뿌려주는것이 조금 더 url을 간결하게 만들 수 있지 않을까.. 라는 생각이 들었습니다. 결론:url을 "/member/{id}" 으로 잡았던 이유가 아직 세션을 학습하기 이전이라 그런것인가요, 아니면 다른 이점이 있기 때문일까요?
-
미해결
cookie 가 제대로 카운트 되지 않아요
get_cookie 를 통해서 어떠한 기능의 쿠키를 저장하고android와 ios에서 save_cookie로저장된 쿠키의 수가 10번 이상이면 모달화면을 띄우고 있어요cookie가 바르게 카운트 되지 않을 때는 어떻게 하면 좋을까요?!
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
쿠키에 대한 궁금증이 생겨 질문드립니다.
안녕하세요 john ahn님의 강의를 듣고 있는 학생입니다. 최근에 로그인 구현을 하면서 궁금한 부분이 생겨서 질문드리려고 합니다 jwt를 사용해서 쿠키에 x_auth값을 저장하고 이걸 사용해서 사용자를 인식하는건데 혹시 사용자가 쿠키삭제를 해서 x_auth값이 날아간 경우에는 어떻게 대처해야할까요? 삭제되면 app crushed가 뜨면서 동작하지 않는데 이 부분이 궁금해서 질문드립니다.
-
해결됨Slack 클론 코딩[실시간 채팅 with React]
도와주세요ㅠㅠㅠ (로그인 쿠키 저장안됨)
안녕하세요. 요즘 열심히 듣고 실습하고 있는데 이 에러때문에 몇시간은 찾아봐도 해결이 안되서 결국 질문 남기네요.. swr버전 업데이트 관련 공지와 다른분의 쿠키관련 질문을 봤지만 해결이 안됩니다.. 도대체 이유를 모르겠습니다. 코드한번만 봐주시면 감사하겠습니다..! 참고로 위에 코드에서 .then(() => { mutate(); }) 이렇게 해도 에러는 똑같이 납니다 로그인 시도했을 때 나오는 에러(Network 탭) (쿠키가 없어요) 회원가입성공은 하는데 회원가입 Network탭에서도 쿠키는 전혀 안보이는데 회원가입했을때 네트워크탭에서도 쿠키가 보여야 하나요? 보여야하는거면 로그인이 아니라 회원가입에서부터 잘못된것인지.. 근데 회원가입 성공할땐 별다른 에러는 없었거든요ㅠㅠ
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
웹브라우저가 특정 쿠키를 어떻게
쿠키저장소에 여러 쿠키들이 있을 수 있나요? 혹시 있을 수 있다면웹 브라우저가 해당 유저가 로그인한 계정을 어떻게 알고 해당 유저의 쿠키를 찾아 요청을 보낼 수 있는지 궁금합니다.
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
쿠키 강의 중 => 쿠키의 생명주기에 관해 질문 있습니다.
안녕하세요~ 쿠키 강의를 듣다가 궁금한 점이 있어서 질문 드립니다. 질문 1) 강의 중에 Set-Cookie에 max-age로 0이나 음수를 지정하면, 쿠키가 삭제된다고 하셨는데요. Set-Cookie가 클라이언트에 도착하자마자 브라우저에 저장되기도 전에 삭제된다는 말씀인가요?? 정확히 어느 시점에서 쿠키가 삭제되고, 언제 이런 방식으로 사용하는지 궁금합니다. 질문 2) 구글에 검색해보니까, expires와 max-age 중에서 max-age가 우선순위를 갖는다고 하는데요. 그럼에도, 쿠키에 expires와 max-age를 둘다 설정해놓고 사용하는 경우가 있나요?? 제 생각에는 장기간으로 설정할 꺼면, expires 하나면 설정하면 되고, 단기간 사용하고 없앨 거라면, max-age 하나만 설정하면 될 것같은데, 예제 코드 몇 개 보다보니까 2가지를 다 설정하는 경우도 보이더라구요. 어차피 max-age 만료되면, 없어질 텐데, 왜 구지 쿠키에 expires까지 설정하는지 궁금합니다. 감사합니다 ~ :)
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
실제 배포한 ip에서는 쿠키가 생성이되지않고 passport중에deserializeUser호출이 안됩니다.
안녕하세요 조현영 선생님 제가지금 해당 강의를 통해서 개인 프로젝트를 진행중인데 문제가 발생이 됬습니다. 클라이언트와 백엔드 다 우분트 환경에서 잘 작동해서 실제 배포한 ip주소로 들어가면 정상적으로 화면이 보여집니다. 클라이언트 서버: 다 작동이 잘 되고 회원가입 기능도 잘 작동해서 실제 해당http://13.125.96.64 쪽으로 요청을 하여 데이터베이스도 잘 생성이되고 됩니다. 근데 문제가 local로 성공적으로 로그인을하면 passport.js 쪽에서 serializeUser 한번 실행을하고 쿠키가 생겨야하는데 생기질 않습니다. 그리고 다시 메인 화면으로 돌아오면 LOAD_MY_INFO_REQUEST action으로 통해서 cookie 와 같이 서버로 전송을해서 deserializeUser도 실행이 되야하는데. deserializeUser도 실행이 안됩니다. 제 로컬에서는 모든게 다 잘 작동합니다. 로컬에서 프론트: 로그인 하면 잘 작동합니다. 로컬에서 백엔드 pm2 환경 보시면 쿠키도 잘 생성되고 passport.js 에서 deserializeUser 도 잘 작동되는게 보입니다. 하지만 배포한 ip에서는 쿠키도 생성이 되질않고 deserializeUser 도 작동하지 않습니다위 사진은 제가 로그인이 성공하고 다시 메인 페이지로 돌아온 화면입니다 성공적으로 로그인이 되도 쿠키는 여전히 생성되지 않았습니다. 위 사진은 제가 로그인이 성공하고 다시 메인 페이지로 돌아온 화면입니다 성공적으로 로그인이 되도 쿠키는 여전히 생성되지 않았습니다. 백엔드쪽 봐도serializeUser 으로 로그인이 성공하고 deserializeUser는 호출이 되질 않습니다. back/app.js 소스코드입니다. const express = require('express'); const PORT = 80; const app = express(); const cors = require('cors'); const effectRouter = require('./routers/effect'); const userRouter = require('./routers/user'); const effectsRouter = require('./routers/effects'); const db = require('./models'); const session = require('express-session'); const cookieParser = require('cookie-parser'); const dotenv = require('dotenv'); const passport = require('passport'); const passportConfig = require('./passport'); const morgan = require('morgan'); const hpp = require('hpp'); const helmet = require('helmet'); db.sequelize .sync() .then(() => { console.log('db 연결 성공'); }) .catch(console.error); passportConfig(); dotenv.config(); app.use(cookieParser(process.env.EFFECTSHOP_SECRET)); app.use( session({ saveUninitialized: false, resave: false, secret:process.env.EFFECTSHOP_SECRET, }) ) if(process.env.NODE_ENV === 'production'){ app.use(morgan('combined')); app.use(hpp()); //보안에 도움되는 라이브러리 app.use(helmet()); }else{ app.use(morgan('dev')); } app.use(passport.initialize()); // 패스포트 설정 미들웨어에 추가. app.use(passport.session()); app.use(express.json()); app.use(express.urlencoded({extended: true})); app.use(cors({ origin:["http://localhost:3000","http://54.180.81.148"], credentials:true, })); app.get('/',(req,res)=>{ res.send('hello express'); }) app.use('/effects' ,effectsRouter); app.use('/effect',effectRouter); app.use('/user', userRouter); app.listen(PORT, ()=>{ console.log(`server on! at http://localhost:${PORT}`); }); 더 자세한 코드를 보시길 원하신다면 여기에 제 소스코드를 올려 놓았습니다 ㅠㅠ 엄청난 고민끝에 여쭤봅니다 ㅜ 감사합니다. https://github.com/sungmin-choi/effectShopByHTML-CSS
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
세션 쿠키 질문 있습니다^^
쿠키의 생명 주기 설명에서 세션 쿠키: 만료 날짜를 생략하면 브라우저 종료시까지만 유지된다고 하셨는데, 웹서버 입장에서는 웹 브라우저가 종료되었다는 사실을 모를텐데 그럼 서버는 세션을 언제까지 보관하고 있나요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
로그아웃 안되시는 분들 참고해주세요!
//logout 때 postman response 결과 { isAuth: false, error: true } 코드는 문제 없는데 이렇게 나오시는 분들 포스트맨에서 get 요청할 때 포스트맨에 send 아래에 cookies 들어가서 x_auth 쿠키 있는지 확인해주세요! 가장 기본적인 걸 못보고 코드만 고치려 했습니다... 며칠 걸쳐서 듣게 되었는데 포스트맨에서 전날에 로그인했다가 끄고 새로 다음 날에 로그아웃 하려하다보니 포스트맨에서 쿠키가 없어서 그런 것이었더군요,,,ㅠㅠ
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
로그아웃시 쿠키
안녕하세요 잘 듣고 있는 학생입니다! 로그인할 때 genToken으로 생성한 토큰을 x_auth라는 이름으로 쿠키를 생성하지 않습니까?! 그 쿠키를 지워주는게 깔끔할까요..? 아니면 로그아웃하고 로그인하는 과정에서 자동으로 x_auth가 업데이트 되어서 쿠키 삭제를 따로 안해줘도 되는건가요? 궁금해서 글 남깁니다.. 늘 감사합니다,,
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
캐시 vs 쿠키 차이점 질문합니다
안녕하세요 캐시와 쿠키와 관련한 차이점에 대해 질문드립니다. 두개 모두 정보를 캐시저장소와 쿠키저장소에 저장하고 이를 사용할 수 있는 공통점이 있는것 같습니다. 하지만 두 개의 사용 헤더도 다르고 사용 목적도 다르기는 한데 두개의 차이점을 찾아보니 난해한 부분이 있어 질문 드립니다. 쿠키와 캐시의 정의, 사용목적, 차이점등에 대해 부연설명 부탁드리겠습니다. 감사합니다.
-
미해결가장 빠른 풀스택: 파이썬 백엔드와 웹기술 부트캠프 (flask/플라스크와 백엔드 기본) [풀스택 Part1-1]
쿠키와 mysql db 질문입니다
안녕하세요 양질의 강의 언제나 감사드립니다. 다름이 아니고 전체적인 맥락이 궁금해서 질문 드립니다. 처음 사용자가 1. 이메일을 적고 구독하기를 누르면 (post request 서버로 날림) 2. 플라스크 서버에서 해당 이메일이 mysql db에 있는지 확인하고 없으면 User 객체 생성하고 있으면 존재하는 User 객체 return 3. flask_login에 있는 login_user 함수를 호출하면서 User객체를 넘겨주면 flask의 login 기능 실행(즉 세션이 만들어지고 flask 서버에 해당 User객체에 대한 세션이 만들어짐) 4. 서버에서 클라이언트로 리턴 해주면서 해당 User의 session(쿠키)까지 같이 보내줌 5. 클라이언트가 쿠키정보를 저장해놓고 다시 한번 같은 서버에 request 보낼때는 쿠키정보와 같이 보냄 6. 서버 입장에서 쿠키정보가 같이 날라오면 쿠키를 decode해서 무슨 User인지 알아냄(current_user.is_authenticated를 통해) 이 정도로 이해한게 맞는지 궁금합니다.또, flask의 login이라는게 결국 서버에 user에 대한 세션을 저장하는 것과 같은 의미로 받아들여도 될까요??? 질문이 길어서 죄송합니다. 항상 강의 감사합니다.
-
해결됨[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
6:23 쿠키파서 path
res.cookie("name",value,{ path:"/" }); 여기서 path 를 여러개 지정할수 있나요? 예를들어 /login 이랑 /room 두개의 경로를 지정해 지정한 경로에만 쿠키를 보여주고 나머지 경로에는 안보여주고 싶은데 어떻게 하는것이 좋을까요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
쿠키 전송 문제
안녕하세요 제로초님 이 강의를 듣고 ssr 말고 먼저 csr 을 구현해보고자 구현중입니다. ssr 부분 제외하고는 강의에서 알려주신 바탕에 조금씩 응용을 해서 react는 netlify에 nodejs-express는 heroku에 배포하였습니다. 아래는 각각의 주소입니다. front - https://app.netlify.com/sites/tre-jhsk/overview back - https://treback.herokuapp.com/ 로컬에서 각각 서버를 켜서 테스트 할때는 로그인 시 쿠키가 전송이 되어서 새로고침 시에도 로그인이 유지가 되는데 배포를 하면 쿠키가 전송이 안되어서 로그인 했을 때 새로고침 시 바로 로그인이 풀려버리고 개발자 도구에도 쿠기가 아예 전송이 안되는 것 같습니다.. 아래 세션 설정 및 프론트 saga index.js 파일에서 axios base url 설정 코드 입니다. 따로 추가해줘야 하는 부분이 있는건가요?
-
해결됨[리뉴얼] 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' },}));
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
쿠키에 저장이 안되는 이유
methods: { async submitForm() { try { // 비즈니스 로직 const userData = { username: this.username, password: this.password, }; const { data } = await loginUser(userData); // token 확인 및 store에 저장(commit) console.log(data.token); this.$store.commit('setToken', data.token); // username을 store에 저장하고 메인 페이지로 push this.$store.commit('setUsername', data.user.username); saveAuthToCookie(data.token); saveUserToCookie(data.user.username); this.$router.push('/main'); } catch (error) { // 에러 핸들링할 코드 console.log(error.response.data); this.logMessage = error.response.data; } finally { this.initForm(); } }, initForm() { this.username = ''; this.password = ''; }, }, 7_til-list 브랜치에서 강의 따라가고 있는데 cookies.js를 import 해서 로그인 폼 제출시 saveAuthToCookie와 saveUserToCookie를 사용했는데 브라우저의 쿠키에 저장이 되질 않습니다. 해결 방법을 알 수 있을까요? 7_til-list 브랜치에서 강의 진행 내용 외에 따로 건드린 것은 없습니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
로그인 시, set-cookie 가 response 에 들어가 있는데, redirect 후 cookie 정보가 없습니다
안녕하세요. 로그인 성공까지는 back-end 에서 확인 되었지만, page 가 redirect되어 로그인이 되지 않은것으로 인식 됩니다. {isAuth: false, error:true} 의 json 값이 들어오길래, 네트워크 탭과 어플리케이션 탭으로 확인해 보았더니 쿠키는 set-cookie로 잘 들어오는 것은 확인 되었지만, 그다음 /auth 에서는 쿠키 정보가 넘어가지 않는 것 같습니다. 쿠키 관련해서는 건드린게 없습니다만, 무엇이 잘못 되었는지 유추할 수 있는 방법을 알려주시면 감사하겠습니다
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
aws에 배포상황, cors 옵션에 credenitals: true, axios에 axios.defaults.withCredentials = true 했는데...왜 프론트에 쿠키가 등록이 안될까요...무한삽질중입니다..
안녕하세요. 쿠키문제로 무한 삽질중입니다. 로컬에서 할 때는 쿠키가 제대로 (localhost:3000), (localhost:3065)에도 등록이 되는걸 확인했습니다. 현재 aws에 배포한 상황입니다.. 백엔드에는 쿠키가 등록이 되는데 프론트에 쿠키가 등록이 안되는 상황입니다. 무슨설정을 잘못하거나 확인해봐야할지 너무 난감하네요. 구글링해도 나오는건 1. 백엔드 프론트 도메인이 달라서 등록이 안된다. ✅ 프론트: broccolidb.com / 백엔드: api.broccolidb.com으로 서브도메인으로 되어있어서 문제라고 생각안됩니다. 2. credentials를 true로 안해줘서 안된다. ✅ axios에도 cors에도 관련 설정을 등록했습니다. 로컬에서도 확인했는데. 설정들 빼가면서도 확인해봤는데 오타문제는 아니라고 생각합니다.......ㅠ 단서는 아직 찾는중인데.. 좀 더 타겟팅할 관련정보를 얻을 수 있을까해서요~ ✅ 현재코드: 관련부분만 붙여봤습니다. // app.js const sessionOpt = { resave: false, saveUninitialized: false, secret: process.env.SECRET, cookie: { httpOnly: true, secure: false, //domain: process.env.NODE_ENV === 'production' && '.broccolidb.com' }, store: new RedisStore({ client: redisClient }) } const corsOptions = { origin: ['http://localhost:3000', 'https://broccolidb.com'], credentials: true } app.use(cors(corsOptions)) if (process.env.NODE_ENV === 'production') { sessionOpt.proxy = true sessionOpt.cookie.secure = true app.use(helmet()) app.use(hpp()) } app.use(session(sessionOpt)) // saga index.js axios.defaults.baseURL = `${process.env.API_URL}` axios.defaults.withCredentials = true // response header 부분 // 프론트 쿠키저장소 //백엔드 쿠키저장소 현재 계속 구글링 중이긴 한데 단서가 혹시 될만한게 있을까해서 문의드립니다. 쿠키 세션 옵션 관련해서는 위에 적은것들 이외에 테스트를 더 해볼건데, 일단 프론트쪽 문제인지 백쪽 문제인지도 확인이 안되서요. ㅠ 그리고 관련한 에러로그는 현재 없습니다ㅠ