오늘 한 일

  • 오늘은 출근 5분 전에나 일어나던 평소보다 훨씬 일찍 일어나서, 업무 시간 전에 어제 못 받은 물리치료를 받았다. 저번보단 안 아팠지만 여전히 아팠다.
  • 목요 테크 세션인 어쩔살롱에서 마이크를 잡게 되어 얘기할 내용을 급하게 정리했다. 주제는 리액트와 뷰인데 발표의 포인트를 어떻게 잡을지는 어제부터 계속 고민을 했었다. 사실 내용 정리도 어제 밤에 하려고 했었지만 깜빡 잠들어 버렸기 때문에 결국 벼락치기가 되어 버렸다ㅠㅠ 하지만 아직 너무 겉만 알기 때문인지 내용을 어떻게 다듬어 봐도 썩 마음에 들지 않았다. 시간은 얼마 없고 강행하게 되었는데, 비록 마음에 걸리는 구석이 많았어도 일단 끝나고 나니 속이 후련하다.
  • 어제 급히 붙였던 로그아웃 기능에 쿠키를 핸들링 하는 코드가 없어서 겉으로는 로그아웃이 된 것 같아 보여도 클라이언트를 통해 재진입하고 나면 로그아웃 버튼을 누르기 전의 그 계정으로 이미 로그인한 상태가 되어 버렸다. 생각도 못하고 있다가 영봉님의 제보로 알게 되었다.
  • 그래서 로그아웃을 하면 브라우저의 쿠키를 삭제하게끔 했는데, 승진님이 자바스크립트로 쿠키에 접근할 필요는 없겠다고 하셨다. 그것도 그런가 싶어서 승진님이 api 응답 헤더에 넣어 보내주시는 Set-Cookie 속성을 받을 수 있도록 요청에 withCredentials: true를 넣었다. 근데 우리 코드에서 자바스크립트로 접근을 지양한다고 해서 모두의 접근이 차단되는 건 아니지 않나..? 결국 httpOnly 같은 옵션이 들어가야 하지 않을까?

오늘 배운 것

  • 대충 스킴만 했으므로 시간 내서 다시 읽어보자.
 

쿠키와 document.cookie

 

ko.javascript.info

 

오늘 한 일

  • 어제, 로그인 시도하면 자동으로 새로운 페이지로 리다이렉트 되어야 하는데 그게 안 되고 끝났었다.
  • 그걸 해결하시는 과정에서 승진님이 전체적인 플로우를 바꾸셨고, 오늘 출근했을 때는 이미 내 코드에서도 그 부분을 고쳐주신 상태였기 때문에 나는 사실상 플로우 변화에 큰 영향을 받지 않은 거나 다름없었다. 다시 그려주신 다이어그램과 수정해주신 코드를 하나씩 비교하면서 실행해보니 이해하는 데 큰 어려움은 없었다.
  • 변경된 플로우에 맞춰 그 외 다른 코드들을 조금씩 변경한 후에는 다시 로컬에서 뷰로 동일한 내용의 작업을 진행했다. 언제 리액트랑 바꿔치기 해야 될지 알 수 없으니 미리미리...!

오늘 배운 것

  • 서버가 응답 헤더에 쿠키를 넣어서 보내주려면, 앞단에서는 그 직전 요청에 withCredentials 옵션을 보내줘야 한다. axios를 쓰는 경우로 예를 들면 이렇다. 헤더에 따로 넣을 필요 없이 config 부분에 그냥 바로 넣어주면 된다.
axios.post('http://server.url', {body_key: body_value}, {withCredentials: true});
  • 아래 링크에 따르면 서버쪽에서도 쿠키를 넣을 때 헤더에 Access-Control-Allow-Credentials 옵션을 함께 넣어줘야 한단다. 그러면 헤더에 쿠키가 실려온다. 이후 이 쿠키는 같은 서버로 요청을 보낼 때마다 자동으로 헤더에 들어가게 된다. 정말 놀라운 사실은, 나는 이 쿠키를 서버에서 생성해서 넘길 수 있다는 것 자체를 처음 알았다. 항상 앞단에서 자체적으로 생성하곤 했었는데... 하나만 알고 둘은 몰랐구나ㅠㅠ
 

[WEB] withCredentials 옵션

이번 시간에는 withCredentials옵션에 대해서 알아 보겠습니다. 이 주제는 앞서 다룬 CORS  에 포한된 내용이라고 생각하시면 되겠습니다. 먼저 CORS은 다른 origin에 대한 요청을 허용하는 정책입니다.

kosaf04pyh.tistory.com

 

Using HTTP cookies - HTTP | MDN

An HTTP cookie (web cookie, browser cookie) is a small piece of data that a server sends to a user's web browser. The browser may store the cookie and send it back to the same server with later requests. Typically, an HTTP cookie is used to tell if two req

developer.mozilla.org

+ Recent posts