CORS 해결

Yun·2024년 2월 7일
0

개인공부

목록 보기
5/28

CORS (Cross-Origin Resource Sharing)
: 사이트 간 출처 리소스 공유

  • 애플리케이션을 통합하기 위한 보안 매커니즘이다.

  • 한 도메인에서 다른 도메인에 있는 리소스와 상호작용하는 방법이다.


CORS가 생긴 이유

CSRF (Cross Site Request Forgery, 사이트 간 요청 위조) 문제를 대비

  • 해커가 피해자의 권한을 도용하여 중요 기능을 실행한다.

  • 피해자의 브라우저에서 다른 애플리케이션으로 가짜 클라이언트 요청을 전송한다.

모든 출처를 허용할 경우, 다른 주소로 인증 토큰이 첨부되어 사용자를 위조할 수 있다.


동일 출처 정책

  • 동일한 출처의 리소스에만 접근할 수 있도록 제한하는 정책이다.

  • 클라이언트 URL의 프로토콜, 포트, 호스트 이름이 클라이언트에서 요청하는 서버와 일치해야 한다.

  • CORS는 동일 출처 정책을 확장한 것으로, 외부와 승인 하에 리소스를 공유하려면 CORS가 필요하다.

  • 서버의 응답에는 문제가 없으나, 브라우저에서 구현되어 동일한 출처가 아니면 차단시킨다.

    • 즉, 서버 간 통신에는 문제가 없다.
  • 클라이언트 URL http://test.com/dir/page.html과 출처 URL 비교

URL결과이유
http://test.com/dir2/page2.html동일한 출처경로만 다름
https://test.com/dir/page.html다른 출처다른 프로토콜
http://test.com:81/dir/page.html다른 출처다른 포트
http://newtest.com/dir/page.html다른 출처다른 호스트

CORS의 기본 동작

  • 클라이언트에서 HTTP 요청 헤더에 Origin 전달

    • Origin: http://localhost:3000
  • 서버에서 응답헤더에 Access-Control-Allow-Origin을 담아 클라이언트로 전달

    • Access-Control-Allow-Origin: http://localhost:3000
    • 리소스 접근이 허용된 출처 URL을 의미한다.
  • 브라우저가 OriginAccess-Control-Allow-Origin을 비교한 후 차단 여부를 결정한다.


출처

0개의 댓글