800===Dev Docs and License/이론 문서

CORS 이해 및 설명

블로글러 2024. 5. 25. 14:46

CORS 정의

CORS는 웹 브라우저에 구현된 보안 기능인 Cross Origin Resource Sharing의 약자야.

이 기능을 사용하면 한 도메인에서 실행 중인 웹 애플리케이션이 다른 도메인의 리소스에 액세스할 수 있어.

CORS의 주요 목적 다른 도메인의 리소스에 대한 액세스를 제한하여 악성 스크립트가 다른 도메인의 중요한 데이터를 자신도 모르게 훔치는 것을 방지하는 것이야.

CORS는 리소스를 제공하기 전에 브라우저에서 확인하는 서버 응답에 몇 가지 HTTP 헤더를 설정하여 구현돼.

이런 헤더에는 Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers 등이 포함되는데.

웹 애플리케이션에 CORS를 사용하려면 교차 출처 액세스가 필요한 각 요청에 대해 응답에 적절한 헤더를 보내도록 서버를 구성해야 해.

구성이 완료되면 클라이언트 측 코드에서 AJAX, Fetch API 또는 WebSockets 등의 기술을 사용하여 다른 도메인에서 제한된 리소스에 액세스할 수 있어

CORS 헤더 정의

  1. Access-Control-Allow-Origin - 리소스에 액세스할 수 있는 원본 도메인을 지정. 값을 " * "로 설정하여 모든 오리진을 허용하거나 특정 도메인으로 설정할 수 있음.
  2. Access-Control-Allow-Methods - 리소스에 액세스할 수 있는 HTTP 메서드(예: GET, POST 등)를 지정하는 헤더. 이렇게 하면 권한이 없는 메소드가 리소스에 액세스하는 데 사용되는 것을 방지할 수 있음.
  3. Access-Control-Allow-Headers - 요청에 전송할 수 있는 HTTP 헤더를 지정(예: 콘텐츠 유형, 권한 부여 등). 이렇게 하면 권한이 없는 헤더가 리소스에 액세스하는 데 사용되는 것을 방지할 수 있음.
  4. Access-Control-Max-Age - 이 헤더는 비행 전 요청 결과를 캐시할 수 있는 시간(초)을 지정. 이렇게 하면 반복적인 프리플라이트 요청의 필요성을 줄일 수 있습니다.
  5. Access-Control-Expose-Headers - 이 헤더는 브라우저에 노출될 수 있는 HTTP 헤더를 나열. 이를 통해 브라우저는 인증 또는 캐싱에 사용되는 사용자 지정 헤더와 같이 숨겨져 있는 특정 헤더에 액세스할 수 있음.
  6. 액세스 제어 허용 자격 증명 - 이 헤더는 쿠키 또는 권한 부여 헤더와 같은 자격 증명을 사용하여 요청을 수행할 수 있는지 여부를 나타냄. true로 설정하면 서버는 요청을 하는 특정 오리진과 함께 Access-Control-Allow-Origin 헤더도 포함해야 함.

헤더는 함께 작동하여 권한이 부여된 도메인, 메서드 및 헤더만 리소스에 액세스할 수 있도록 하고 무단 액세스 및 데이터 도난을 방지해

확장 프로그램 없이 CORS 허용해서 테스트 하는 방법

  • 매개 변수 추가

CORS 문제를 일시적으로 우회하는 한 가지 방법은 동일 출처 정책을 비활성화하고 교차 출처 요청을 허용하는 "--disable-web-security" 플래그를 사용하여 Chrome을 실행.

Windows에서 이 작업을 수행하려면 :

  1. Chrome의 모든 인스턴스를 닫는다.
  2. Chrome 바로가기를 마우스 오른쪽 버튼으로 클릭하고 "속성"을 선택.
  3. "대상" 필드에서 명령 끝의 Chrome 실행 파일 경로 뒤에 "--disable-web-security"를 추가. 예를 들어, 대상 필드는 다음과 같아야 합니다: "C:\프로그램 파일 (x86)\구글\크롬\응용프로그램\chrome.exe" --disable-web-security
  4. "적용"을 클릭한 다음 "확인"을 클릭하여 변경 사항을 저장.
  5. 수정한 바로가기를 사용하여 Chrome을 실행.

이 방법은 일반적인 브라우징에는 사용하지 않는 것이 좋으며 개발 및 테스트 목적으로만 사용해야 함.

출처 : CHATGPT

728x90