투케이2K

42. (Network/네트워크) CORS (Cross Origin Resource Sharing) 설명 - 교차 원본 리소스 공유 본문

Network

42. (Network/네트워크) CORS (Cross Origin Resource Sharing) 설명 - 교차 원본 리소스 공유

투케이2K 2023. 9. 19. 20:43

[구 분]

구분 : Network / 네트워크

제목 : CORS (Cross Origin Resource Sharing) 설명 - 교차 원본 리소스 공유

 

[설 명]

 

1. CORS 는 교차 원본 리소스 공유 의미로, 다른 Origin (도메인 / 프로토콜) 등으로 들어오는 요청을 허용해주는 HTTP 헤더 기반 메커니즘입니다

  >> 요청이 어느 주소에 시작되었는지 나타내는 값 = 요청을 보낸 주소와 받는 주소가 다르면 CORS 발생


2. CORS 는 보안상의 이유로 브라우저는 스크립트에서 시작된 교차 출처 HTTP 요청을 제한합니다

  >> API 를 사용하는 웹 애플리케이션은 다른 출처의 응답에 올바른 CORS 헤더가 포함되지 않는 한 애플리케이션이 로드된 동일한 출처에서만 리소스를 요청할 수 있습니다


3. CORS 표준은 서버가 웹 브라우저에서 해당 정보를 읽을 수 있는 새로운 HTTP 헤더를 추가하여 작동합니다


4. HTTP 요청 및 승인 절차
  >> HTTP 요청의 경우 브라우저가 요청을 "사전 실행" 하여 서버에서 지원되는 방법을 요청
       "Origin" : 해당 위치에서 요청을 보낸다
       "Access-Control-Request-Method" : 어떤 메소드의 요청을 보낼건지 물어본다
       "Access-Control-Request-Headers" : 실제 요청에 추가 헤더를 무엇을 보낼 수 있는지 물어본다

  >> HTTP 요청 방법 사용이 서버에서 "승인" 되면 실제 요청을 보냅니다
      "Access-Control-Allow-Origin" : 해당 Origin 을 허가한다
      "Access-Control-Allow-Methods" : 해당 메소드 들의 요청을 허가한다
      "Access-Control-Allow-Headers" : 해당 헤더 들을 허가한다
      "Access-Control-Max-Age" : 응답의 캐시 기간, 해당 캐시가 있을시 preflight 과정을 건너뛴다

  >> 서버는 요청과 함께 "자격 증명" (예: 쿠키 및 HTTP 인증 ) 을 보내야 하는지 여부를 클라이언트에게 알릴 수도 있습니다
      -------------------------------------------------------------
      [서버에 요청]
      "Origin" : 해당 위치에서 요청을 보낸다
      "credentials : include" : 자격증명 정보가 포함된다
      자격증명 정보 : 헤더나 쿠키 등
      -------------------------------------------------------------
      [서버의 응답]
      "Access-Control-Allow-Origin" : 해당 Origin 을 허가한다
      "Access-Control-Allow-Credentials: true" : 자격증명을 허가한다


5. CORS 필요 이유 및 서버 설정 방법

  >> CORS 는 보안상 제한을 걸기 위해 필요하며 (요청을 보낸 주소와 받는 주소가 다르면 접근 거부), 
      서버에서는 믿을 수 있는 다른 브라우저에서 요청이 온 경우 서버 설정에서 접근 허가 설정을 할 수 있습니다

 

반응형
Comments