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 헤더 정의
- Access-Control-Allow-Origin - 리소스에 액세스할 수 있는 원본 도메인을 지정. 값을 " * "로 설정하여 모든 오리진을 허용하거나 특정 도메인으로 설정할 수 있음.
- Access-Control-Allow-Methods - 리소스에 액세스할 수 있는 HTTP 메서드(예: GET, POST 등)를 지정하는 헤더. 이렇게 하면 권한이 없는 메소드가 리소스에 액세스하는 데 사용되는 것을 방지할 수 있음.
- Access-Control-Allow-Headers - 요청에 전송할 수 있는 HTTP 헤더를 지정(예: 콘텐츠 유형, 권한 부여 등). 이렇게 하면 권한이 없는 헤더가 리소스에 액세스하는 데 사용되는 것을 방지할 수 있음.
- Access-Control-Max-Age - 이 헤더는 비행 전 요청 결과를 캐시할 수 있는 시간(초)을 지정. 이렇게 하면 반복적인 프리플라이트 요청의 필요성을 줄일 수 있습니다.
- Access-Control-Expose-Headers - 이 헤더는 브라우저에 노출될 수 있는 HTTP 헤더를 나열. 이를 통해 브라우저는 인증 또는 캐싱에 사용되는 사용자 지정 헤더와 같이 숨겨져 있는 특정 헤더에 액세스할 수 있음.
- 액세스 제어 허용 자격 증명 - 이 헤더는 쿠키 또는 권한 부여 헤더와 같은 자격 증명을 사용하여 요청을 수행할 수 있는지 여부를 나타냄. true로 설정하면 서버는 요청을 하는 특정 오리진과 함께 Access-Control-Allow-Origin 헤더도 포함해야 함.
헤더는 함께 작동하여 권한이 부여된 도메인, 메서드 및 헤더만 리소스에 액세스할 수 있도록 하고 무단 액세스 및 데이터 도난을 방지해
확장 프로그램 없이 CORS 허용해서 테스트 하는 방법
- 매개 변수 추가
CORS 문제를 일시적으로 우회하는 한 가지 방법은 동일 출처 정책을 비활성화하고 교차 출처 요청을 허용하는 "--disable-web-security" 플래그를 사용하여 Chrome을 실행.
Windows에서 이 작업을 수행하려면 :
- Chrome의 모든 인스턴스를 닫는다.
- Chrome 바로가기를 마우스 오른쪽 버튼으로 클릭하고 "속성"을 선택.
- "대상" 필드에서 명령 끝의 Chrome 실행 파일 경로 뒤에 "--disable-web-security"를 추가. 예를 들어, 대상 필드는 다음과 같아야 합니다: "C:\프로그램 파일 (x86)\구글\크롬\응용프로그램\chrome.exe" --disable-web-security
- "적용"을 클릭한 다음 "확인"을 클릭하여 변경 사항을 저장.
- 수정한 바로가기를 사용하여 Chrome을 실행.
이 방법은 일반적인 브라우징에는 사용하지 않는 것이 좋으며 개발 및 테스트 목적으로만 사용해야 함.
출처 : CHATGPT
'800===Dev Docs and License > 이론 문서' 카테고리의 다른 글
Coding Best Practice (0) | 2024.06.01 |
---|---|
Network Subnet Introduced (0) | 2024.05.29 |
소프트웨어 크랙 (해적본)은 어떻게 만들고 개발자들은 왜 못막는 걸까? (0) | 2024.05.25 |
The Compilation Process (0) | 2024.05.25 |
만들면서 배우는 클린 아키텍쳐 (0) | 2024.05.25 |