CORS란 무엇인가요?

2024. 3. 18. 11:15·여러가지/이것저것

CORS(Cross-Origin Resource Sharing)는 웹 페이지가 다른 도메인의 리소스에 접근할 수 있게 해주는 보안 메커니즘입니다. 기본적으로, 웹 브라우저는 같은 출처 정책(Same-Origin Policy)을 따릅니다. 이 정책은 웹 페이지가 다른 도메인(출처)의 리소스에 접근하는 것을 제한하는 보안 조치로, XSS(Cross-Site Scripting) 공격과 같은 웹 보안 취약점을 예방하는 데 도움이 됩니다. 그러나 이로 인해 합법적인 크로스-도메인 요청도 차단될 수 있습니다.

CORS 작동 방식

CORS는 웹 애플리케이션에서 다른 출처의 리소스를 안전하게 요청할 수 있도록 허용합니다. 이는 서버가 추가 HTTP 헤더를 사용하여 브라우저에게 해당 리소스에 대한 접근을 허용하는 출처와 조건을 알려줌으로써 이루어집니다.

예를 들어, [https://domain-a.com](https://domain-a.com)의 웹 페이지가 AJAX를 사용하여 [https://api.domain-b.com](https://api.domain-b.com)에 데이터를 요청하는 경우, `domain-b.com`의 서버는 다음과 같은 HTTP 헤더를 응답에 포함시켜 `domain-a.com`의 요청을 허용할 수 있습니다.

Access-Control-Allow-Origin: [https://domain-a.com](https://domain-a.com)  

Preflight Request

CORS 정책에서는 특정 유형의 요청(특히, 사용자 데이터를 변경할 수 있는 요청 또는 특별한 헤더를 사용하는 요청)을 보내기 전에 "사전 요청"(Preflight Request)을 보낼 수 있습니다. 이는 서버에게 실제 요청을 보내기 전에 해당 요청이 안전한지 확인하는 과정입니다.

Preflight 요청은 OPTIONS 메서드를 사용하며, 실제 요청에서 사용될 HTTP 메서드와 헤더를 Access-Control-Request-Method와 Access-Control-Request-Headers 헤더에 포함시켜 서버로 보냅니다. 이에 대한 응답으로 서버는 Access-Control-Allow-Methods와 Access-Control-Allow-Headers 헤더를 통해 해당 요청의 허용 여부와 조건을 알려줍니다.

CORS의 중요성

CORS는 현대의 다양하고 복잡한 웹 애플리케이션에서 필수적입니다. API 서버와 프론트엔드가 다른 도메인에 배포되는 경우가 많기 때문에, 개발자는 CORS 정책을 이해하고 적절히 구성할 필요가 있습니다. 올바른 CORS 설정은 애플리케이션의 접근성과 보안성을 모두 증가시킬 수 있습니다.

저작자표시 (새창열림)

'여러가지 > 이것저것' 카테고리의 다른 글

OSI7계층과 TCP/IP 4계층 모델  (0) 2024.03.18
OSI7계층과 TCP/IP 4계층 알아보기  (0) 2024.03.18
RESTful이란 무엇인가?  (0) 2024.03.18
HTTP METHOD와 그 역할  (0) 2024.03.18
GET과 POST의 차이점  (0) 2024.03.18
'여러가지/이것저것' 카테고리의 다른 글
  • OSI7계층과 TCP/IP 4계층 모델
  • OSI7계층과 TCP/IP 4계층 알아보기
  • RESTful이란 무엇인가?
  • HTTP METHOD와 그 역할
hyeseong-dev
hyeseong-dev
안녕하세요. 백엔드 개발자 이혜성입니다.
  • hyeseong-dev
    어제 오늘 그리고 내일
    hyeseong-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (283)
      • 여러가지 (108)
        • 알고리즘 & 자료구조 (73)
        • 오류 (4)
        • 이것저것 (29)
        • 일기 (1)
      • 프레임워크 (39)
        • 자바 스프링 (39)
        • React Native (0)
      • 프로그래밍 언어 (39)
        • 파이썬 (31)
        • 자바 (3)
        • 스프링부트 (5)
      • 컴퓨터 구조와 운영체제 (3)
      • DB (17)
        • SQL (0)
        • Redis (17)
      • 클라우드 컴퓨팅 (2)
        • 도커 (2)
        • AWS (0)
      • 스케쥴 (65)
        • 세미나 (0)
        • 수료 (0)
        • 스터디 (24)
        • 시험 (41)
      • 트러블슈팅 (1)
      • 자격증 (0)
        • 정보처리기사 (0)
      • 재태크 (0)
        • 암호화폐 (0)
        • 기타 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    항해99
    파이썬
    취업리부트
    #개발자포트폴리오 #개발자이력서 #개발자취업 #개발자취준 #코딩테스트 #항해99 #취리코 #취업리부트코스
    java
    mybatis
    백준
    Spring Boot
    AWS
    FastAPI
    자바
    reactor
    docker
    OOP
    그리디
    RDS
    DP
    EC2
    프로그래머스
    Spring WebFlux
    SAA
    Python
    시험
    완전탐색
    spring
    WebFlux
    ecs
    Redis
    Docker-compose
    celery
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hyeseong-dev
CORS란 무엇인가요?
상단으로

티스토리툴바