-
Notifications
You must be signed in to change notification settings - Fork 8
배포 전, 로컬에서 로그인 기능 포함 테스트해보는 법
프론트와 백앤드 둘 다 로컬에서 서버를 띄우려면 하나의 컴퓨터에서 로컬을 띄워야한다.
즉, 마위 컴퓨터의 프론트 로컬 서버 ↔ 제우스 컴퓨터의 백앤드 로컬 서버
간에는 쿠키 통신이 불가능하다.
그럼 우리는 MSW로 개발 이후, 배포 전. 이 사이에 테스트를 해보고 싶다면 어떻게 해야하냐?
프론트에서는 localhost를 https로 띄운다.
백앤드는 SSL을 써야하는데, 이건 백앤드가 해줘야해서… https://api.code-zap.com으로 요청을 해야한다.
(그럼 즉, 백앤드가 새로 만든 기능과 테스트를 해보려면 해당 기능을 배포해줘야한다. 백앤드가 로컬에서 띄우면 http이기 때문에)
그럼 프론트에서 https로 localhost를 띄워보자.
- SSL 인증서를 가라로 발급받는다. (터미널을 실행시키는 위치는
2024-code-zap/frontend
)
openssl genrsa -out private.key 4096
openssl req -new -sha256 -out private.csr -key private.key
openssl x509 -req -days 3650 -in private.csr -signkey private.key -out private.crt -extensions req_ext
openssl x509 -in private.crt -out private.pem -outform PEM
- 그럼 터미널창으로 다음과 같이 질의응답이 시작된다. 각 항목이 구체적으로 뭔지 궁금하면 [다음 링크](https://velog.io/@wjdska245/webpack-%EC%84%A4%EC%A0%95%EC%9C%BC%EB%A1%9C-localhost-https-%ED%99%98%EA%B2%BD%EC%9C%BC%EB%A1%9C-%EC%8B%A4%ED%96%89%ED%95%98%EA%B8%B0)를 보자
- 그럼 다음과 같이 pem과 key가 발급된다.
-
발급 받은 키들을 webpack의 devServer 옵션에 넣어준다.
const fs = require('fs'); devServer: { port: 3000, historyApiFallback: true, server: { type: 'https', options: { key: fs.readFileSync('./private.key'), cert: fs.readFileSync('./private.pem'), }, }, host: 'localhost', },
const fs = require('fs'); devServer: { port: 3000, historyApiFallback: true, server: { type: 'https', options: { key: fs.readFileSync('./private.key'), cert: fs.readFileSync('./private.pem'), }, }, host: 'localhost', },
-
이후 npm run dev로 서버를 켠다
-
만약 쿠키를 그래도 못 가져온다면? [다음 이슈](https://github.com/webpack/webpack-dev-server/issues/2957)를 참고하자
One convenient way of getting rid of the warning screen is to enable this flag in the browser settings
chrome://flags/#allow-insecure-localhost
. But the certificate is still invalid and hot-reloading doesn't work.
해당 링크로 들어가서 강제로 허용하는듯
크롬에 들어가서 인증서를 본 것
우리 로그인은 쿠키를 사용한다. 이는 http끼리 통신을 하거나 https끼리 통신을 해야한다. 다만 http끼리 통신을 할때는 쿠키를 보내지 못하는 이슈가 있다. origin, samesite 이슈. 따라서 http끼리 통신을 하려면 같은 컴퓨터에서 프론트, 백 서버를 켜야한다는 것이다. (같은 오리진이어야하기때문에)
현재 상황은 백앤드 측에서 모든 origin을 allow, samesite=none, secure=true, httponly=true이다. 이는 개발서버로 사용하고, 프로덕션 서버에는 origin을 제한해야할 것이다.
https://stackoverflow.com/questions/26663404/webpack-dev-server-running-on-https-web-sockets-secure
[webpack devserver proxy](https://webpack.js.org/configuration/dev-server/#devserverproxy) 공식문서
[proxy란?](https://joshua1988.github.io/webpack-guide/devtools/webpack-dev-server.html#%ED%94%84%EB%A1%9D%EC%8B%9C-proxy-%EC%84%A4%EC%A0%95)
[쿠키 도메인 관련 velog](https://velog.io/@swj9077/Cookie%EC%9D%98-domain-%EC%86%8D%EC%84%B1%EA%B3%BC-localhost-%EC%82%AC%EC%9A%A9-%EC%8B%9C-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD)
[samesite관련](https://velog.io/@ohzzi/%EC%BF%A0%ED%82%A4%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-API-%ED%86%B5%EC%8B%A0%EC%9D%84-%ED%95%A0-%EB%95%8C-%EC%A3%BC%EC%9D%98%ED%95%A0-%EC%A0%90)
[도움이 된 인프런 글 1](https://www.inflearn.com/community/questions/1299699/%EB%B0%B0%ED%8F%AC%ED%85%8C%EC%8A%A4%ED%8A%B8%ED%95%A0%EB%95%8C-%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8%EC%97%90%EC%84%9C-api%ED%98%B8%EC%B6%9C%ED%95%98%EB%A9%B4-%EC%BF%A0%ED%82%A4%EA%B0%80-%EC%A0%84%EB%8B%AC%EB%90%98%EC%A7%80-%EC%95%8A%EA%B3%A0%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4)
[도움이 된 인프런 글 2](https://www.inflearn.com/community/questions/896182/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%90%EC%84%9C-credentials-include%EB%A1%9C-%EC%84%A4%EC%A0%95%ED%95%9C%EA%B2%BD%EC%9A%B0-cors-%EB%AC%B8%EC%A0%9C)
- 백엔드 코드 컨벤션
- 백엔드 기술 스택 및 선정 이유
- 각종 인스턴스 설정 파일 및 구성 위치 가이드
- 1.1.2 버전 ERD (24.09.27)
- 백엔드 CI CD 동작 프로세스
- 로컬 DB 환경 설정
- 백엔드 로깅 전략
- 백엔드 로그 모니터링 구성도
- 스프링 메트릭 모니터링 구성도
- Flyway 로 스키마 관리
- 코드잽 서버 구성도
- Git Submodule 사용 메뉴얼
- 프론트엔드 코드 컨벤션
- 프론트엔드 기술 스택 및 선정 이유
- 프론트엔드 서비스 타겟 환경 및 브라우저 지원 범위 선정
- 프론트엔드 모니터링 및 디버깅 환경 구축
- 프론트엔드 테스트 목록
- 프론트엔드 라이브러리 기술 검토
- 프론트엔드 개발서버, 운영서버 빌드 및 배포 환경 구분
- 목표했던 타겟 환경과 디바이스에서 서비스 핵심 기능 동작 확인
- 프론트엔드 접근성 개선 보고서
- EC2 로그 확인 방법
- VSCode를 통한 EC2 인스턴스 SSH 연결 방법
- 터미널을 통한 EC2 인스턴스 SSH 연결 방법
- NGINX 설정 파일 접근 및 적용 방법
- DB 접속 및 백업 방법
- [QA] 배포 전 체크리스트
- CI 파이프라인 구축
- CD 파이프라인 구축
- 백엔드 CI CD 트러블슈팅
- Lombok Annotation Processor 의존성을 추가한 이유
- 2차 스프린트 기준 ERD
- DTO 검증하기
- ProblemDetail
- Fork된 레포지토리 PR에서 CI Secrets 접근 문제 해결
- AWS CloudWatch 모니터링
- 스프링 메트릭 모니터링 구축 방법
- 로깅과 Logback에 대해 알아보아요.
- 백엔드 CD 파이프라인 Ver.2
- 요청, 응답 로그에 correlationId 를 추가하자!
- 3차 스프린트 기준 ERD
- 더미데이터 생성하고 실행하기
- 쿼리 성능 개선 결과
- 테이블별 인덱스 설정 목록
- 사용자 증가 시 발생할 수 있는 문제 상황과 개선 방안
- k6를 사용한 서버 부하 테스트
- 6차 스프린트 기준 ERD
- Query Performance Improvement Results
- 테스트 전략 및 CI 설정
- CI CD 구조
- 배포 전, 로컬에서 로그인 기능 포함 테스트해보는 법
- stylelint 적용기
- 내 작업 브랜치 중간에 Merge된 동료의 작업물을 넣고 싶다면 pull vs rebase
- [TS] Webpack config
- [TS] Webpack 환경에서 MSW v2 이슈
- [TS] webpack에서 react‐router‐dom 적용 안됨
- 2024.07.28 새 기획 회의
- 2024.07.26 2차 데모데이 후 회의
- 2024.07.11 백엔드 논의 좀 할게요
- 2024.07.11 백엔드 ERD 회의
- 2024.07.09 깃 브랜치 전략, PR 템플릿 회의
- 2024.07.03 주제 선정 회의
- 2023.07.03 팀빌딩데이 킥오프 회의
- 2023.08.07 3차 스프린트 중간회고