인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Like me black님의 프로필 이미지
Like me black

작성한 질문수

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

쿠키 이해하기

13분 10초 18행과 30행에 대해 질문드리고 싶습니다

해결된 질문

작성

·

151

0

강사님 안녕하세요

혹시if( req.url.startswith('/login') ) 이

if(req.url ==='/login') 과 같은 역할인지 질문드리고 싶습니다

 

그리고

18행에

if( req.url.startswith('/login') )

30행이

else if(cookies.name) 인데요

만약에 url의 경로는 호스트/login인데

브라우저에 name이라는 쿠키까지 있는 경우에는

18행의 조건문만 실행되어도 되는지 질문드리고 싶습니다

 

그러면 이 경우에는

브라우저에 name이라는 쿠키가 있어도

서버에서 30행의

else if(cookies.name) 는 실행이 안되는지 질문드리고 싶습니다

 

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

같은 역할인데 startsWith로 하면 /login?querystring처럼 뒤에 뭐가 더 붙는 것들까지 같이 잡아낼 수 있습니다.

네 else if라서 18행만 실행됩니다. 근데 실무에서는 보통 쿠키가 있으면 /login 부분이 실행되지 않게 하는게 보통이긴 합니다.

Like me black님의 프로필 이미지
Like me black
질문자

가르쳐주셔서 감사합니다

제가 방금 실습을 해봤는데요, 

 

맨처음 로그인할 때

parseCookies(req.headers.cookie) 를 3번 호출하는데요

 

parseCookies(req.headers.cookie)를 1번째 호출할 때는

if( req.url.startswith('/login') )한번 호출해주고

 

parseCookies(req.headers.cookie)를 2번째 3번째 호출할 때는

else if (cookies.name)

를 호출해주더라구요

 

혹시 그 이유를 가르쳐주시면 감사하겠습니다

 

 

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

console.log('url', req.url)도 같이 넣어서 그 때 url이 뭔지 로깅해보세요.

Like me black님의 프로필 이미지
Like me black
질문자

네 이렇게 나왔습니다.

 

처음에 쿠키가 전달되니 그 다음부터는 else if(cookie.name) 조건문을 따르는군요

강사님 혹시

URL 창에서 쿼리스트링이 안보이는데요

로그인이어서 POST 인가요?

 

그런데form 태그에서는 method = post로 명시하지 않아서요

 

따로 form method를 정해주지 않으면 GET 이 디폴트로 알고 있는데

URL 창에 쿼리스트링이 보이지 않는 이유를 가르쳐주시면 감사하겠습니다

Like me black님의 프로필 이미지
Like me black
질문자

아 302 리다이렉션해서 그렇군요

Like me black님의 프로필 이미지
Like me black
질문자

강사님 혹시 이 예제는 GET으로 로그인 구현했는데, 리다이렉션 덕분에 POST처럼 쿼리스트링이 안보여지는 효과를 봤다고 생각해도 되나요?

Like me black님의 프로필 이미지
Like me black
질문자

강사님 질문이 하나 더 있습니다 이 예제에서는 서버에 req.url이 3번 전달되었는데요 사이트에 따라서 req.url의 전달횟수를 예측하는 방법도 나중에 배우는지도 질문드리고 싶습니다

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

근데 리디렉션때문에 쿼리스트링이 안보여지는 효과라고 보긴 좀 그런게 엄연히 GET /login?name=hello는 존재하는 것이라서요. 그냥 빠른 속도로 주소창이 전환된거죠.

req.url 전달 횟수는 정직합니다. 프론트에서 요청 보내는 개수가 그것이니까요. 요청을 한번만 보낼지 여러번 보낼지는 프로그래머가 통제하는 거죠.

Like me black님의 프로필 이미지
Like me black
질문자

아 가르쳐주셔서 감사합니다

 

form 태그가 보낸 req.url인 /login?name2=Hello 한번

서버에서 클라이언트에게 보내준 리다이렉션으로 인해 생긴 req.url 인 / 한번

favicon 한번 총 3번이군요

Like me black님의 프로필 이미지
Like me black

작성한 질문수

질문하기