2023.08.22.화.TIL

heeh·2023년 8월 22일

TIL

목록 보기
69/82
post-thumbnail

2023.08.22.화.TIL

  • 할 것
    • 오전 11시 회의!
    • ERD 완성, entity 완성, 깃(포크) 배우기
    • CS, 기술 면접, 공통 공부도 잊지 말기!
    • CS 강의 듣고 중요한 질문 1개

깃허브

  • 포크 : 내 것으로 퍼오기

  • 싱크 포크 : 레포지토리 업데이트 개념

  • 인텔리제이에서 클론 : git → Clone → 주소창에 내 레포지토리 주소 넣어주기

    • 내 레포지토리 주소 넣어주기 : 초록색(코드라고 적혀있는) 버튼 클릭하여 주소 링크 복사!!
  • PR 테스트

  • 싱크 포크 : 업데이트 될 브랜치 확인!!

  • 정리

    1. sync fork

    2. pull

    3. 본인 작업 중인 브랜치로 merge!

      1번 방법 : 작업 브랜치(로컬) → 작업 브랜치(리모트)에 머지 → 작업 브랜치를 원본에 PR

      2번 방법 : 작업 브랜치를 마스터에 머지(로컬)에 머지 → 마스터(리모트) → 마스터를 원본에 PR

  • 리스폰스엔티티 사용

  • 글로벌익셉션핸들러 사용하기, 공부하기!

enum

  • 보통 변경되지 않을 것들을!
  • 카테고리, 카드에 사용
    • naver에서 부동산, 카페, 블로그 같은 카테고리!
    • 국민카드, 현대카드, 농협카드 등등 enum으로 설정된 카드(은행) 코드로만 결제 될 수 있게!

기술면접 6

💡 CORS(Cross Origin Resource Sharing)에 대해 설명해주세요.

CORS

CORS(Cross-Origin Resource Sharing)는 웹 브라우저에서 동작하는 보안 메커니즘 중 하나로, 웹 페이지나 애플리케이션에서 다른 도메인(Origin)으로부터 리소스를 요청할 때 발생하는 보안 이슈를 다루기 위해 사용됩니다. 웹 브라우저는 기본적으로 동일 출처 정책(Same-Origin Policy)를 따릅니다. 이는 웹 페이지나 스크립트가 동일한 출처에서 로드한 리소스만 접근할 수 있도록 제한하는 보안 메커니즘입니다. 하지만 때로는 다른 출처의 리소스에 접근해야 할 경우가 있을 수 있습니다. 이런 경우에 CORS가 사용되며, 서버 측에서 특정 출처에서 온 요청을 허용하는 방식으로 동작합니다.

CORS는 다음과 같은 방법으로 작동합니다:

  1. 요청의 Origin 확인: 클라이언트에서 다른 출처로 요청을 보낼 때 요청 헤더에 Origin이라는 필드에 현재 페이지의 출처가 포함됩니다.
  2. 서버의 응답: 서버는 요청이 올바른 출처에서 온 것인지 확인하고, 허용되는 출처인 경우 응답 헤더에 CORS 관련 정보를 포함하여 클라이언트에게 알려줍니다.
    • Access-Control-Allow-Origin: 허용된 출처의 목록을 설정합니다. '*'를 사용하면 모든 출처를 허용하는 것이지만, 보안상의 이유로 특정 출처만 허용하는 것이 좋습니다.
    • Access-Control-Allow-Methods: 허용된 HTTP 메서드를 설정합니다.
    • Access-Control-Allow-Headers: 허용된 요청 헤더를 설정합니다.
    • Access-Control-Allow-Credentials: 인증 정보를 포함한 요청을 허용할지 여부를 설정합니다.
    • Access-Control-Expose-Headers: 브라우저에서 접근 가능한 응답 헤더를 설정합니다.
    • Access-Control-Max-Age: 프리플라이(pre-flight) 요청의 캐시 시간을 설정합니다.
  3. 프리플라이(pre-flight) 요청: 복잡한 요청(특정 헤더를 포함하거나, 인증 정보를 전송하는 경우 등)의 경우, 브라우저는 실제 요청을 보내기 전에 OPTIONS 메서드를 사용하여 서버로 프리플라이 요청을 보냅니다. 서버는 이에 대한 응답으로 CORS 관련 정보를 다시 전달해야 합니다.

CORS는 웹 애플리케이션의 보안을 유지하면서 다른 출처의 리소스에 접근할 수 있는 방법을 제공합니다. 서버 측에서 적절한 CORS 설정을 해야 하며, 클라이언트에서도 출처 확인과 관련된 조치를 취해야 합니다.

CORS 간단 ver

CORS(Cross-Origin Resource Sharing)는 웹 브라우저에서 보안을 유지하면서 다른 웹사이트에서 데이터를 가져오는 규칙입니다. 웹 브라우저는 한 웹사이트에서 가져온 정보가 다른 웹사이트로 보내지는 것을 방지하는데, 이것은 보안을 위해서입니다.

하지만 때로는 다른 웹사이트의 데이터가 필요한 경우가 있는데, 이때 CORS가 도와줍니다. 웹사이트가 다른 웹사이트의 데이터를 사용하려면, 해당 데이터를 제공하는 웹사이트에서 CORS를 허용해야 합니다. 그래야 웹 브라우저가 데이터를 가져올 수 있습니다.

간단히 말해, CORS는 웹사이트끼리 데이터를 주고받을 때의 규칙을 정해주는 것으로, 보안을 유지하면서도 필요한 데이터를 가져올 수 있도록 도와줍니다.

  • CORS는 웹 브라우저에서 한 웹사이트가 다른 웹사이트의 데이터를 요청할 때의 규칙을 정해줍니다. 기본적으로는 보안을 위해 다른 출처의 데이터 요청이 차단 되지만 필요한 경우에 서버 측에서 특정 출처에 대한 접근을 허용할 수 있습니다. 이로써 보안을 유지하고 웹 애플리케이션이 다른 웹사이트의 데이터를 안전하게 사용할 수 있게 됩니다.
  • 피드백
    • cross-origin에 대한 개념 알기!
    • 프로토콜 - http, https 프로토콜이 다르다!
    • 도메인 - domain.com과 other-domain.com은 다르다!
    • 포트번호 - 8080포트와 3000포트는 다르다!
      → 프론트엔드와 백엔드의 서버를 분리할 때!

체크

  • 관심사 엔티티는 팀장님이 더 생각&추가!
  • 콜라보레이터, 포크 방식!
    • 콜라보레이터로도…..!!? 일단 초대됨
  • setting-default branch에서 master → develop 변경
  • 어플리케이션 프로퍼티스 환경변수…!?
    • 런타임 왼쪽에 <에디트 컨피규레이션> 클릭
    • <모디파이 옵션스> 클릭
    • <인바이러먼트 바레이블스> 클릭하여 추가
    • <인바이러먼트 바레이블스>의 끝에 있는 문서 버튼 클릭
    • +를 추가하여 NAME에 DATA_PASSWORD, DATA_USERNAME, JWT_SECRET_KEY를 추가
    • Name에 맞는 Value 추가
  • 더미데이터 - 유저부터!
    • + 버튼 누르면 더미데이터 만들고 정보 입력 넣을 수 있음

빌더 패턴

  • 반드시 필요
    • @NoArgsConstructor : 파라미터가 없는 기본 생성자를 만들어 주는 롬복의 어노테이션
    • @AllArgsConstructor
    • @Builder
      → 특정 생성자에 Builder를 부착할 수도 있다
  • @OneToMany에는 @Builder.Default가 붙는다 → @ManyToOne에는 안 붙여도 된다
    • 인스턴스를 생성할 때 특정 필드를 특정 값으로 초기화하고 싶다면 사용하는 어노테이션
  • @Builder.Default는 null과 관련
    • 가져오려는 값이 null일 때 오류가 발생하지 않도록 하는 것
  • 인스턴스 생성 → 자바와 관련, 자바 공부!
    Post post = new post
    • 빌더 패턴을 쓰게 되면
      Card card = requestDto.toEntity(area);
      public Card toEntity(Area area) {
      	Card board = Card.builder()
      		.area(area)
      		.title(this.title)
      		.contrnt(this.content)
      		.
      		.
      		.
      		.
      		.build();
      
      return board;
      }
      • Dto 내에 toEntity 메서드를 만들어서 그 안에서 빌더를 호출한다

of

  • Service 클래스에 Entity를 바로 반환하면 안된다
    • DTO 형태로 반환해야 함!
    • 순환참조
  • 빌더를 쓰고 of 를 가져다 쓰면 포문이 빠져도 된다
  • Setter 사용 최소화하기
    • 직접 작성하기, 어떤 기능인지 디테일을 메서드에 적기
profile
공부하자개발하자으쌰으쌰

0개의 댓글